GetMetadataPropertyValue (Azure 串流分析)

查詢特定屬性的輸入資料。 屬性有三種類型:Adapter、User 和 Unique EventId。

配接器中繼資料屬性

GetMetadataPropertyValue 函式可存取特定輸入屬性。 此外,所有屬性都可以當做單一記錄來存取。

注意

此時,此函式無法在Azure 入口網站 (上進行測試,它會傳回空的結果) 。 您可以使用 ASA 延伸模組來Visual Studio Code使用即時資料在查詢中測試此函式。

事件中樞的預設中繼資料屬性

  • EventEnqueuedUtcTime
  • EventProcessedUtcTime
  • PartitionId
  • Offset
  • SequenceNumber
  • PartitionKey
  • 發行者,在傳入事件中可用時

範例:

從事件中樞擷取 EventEnqueuedUtcTime:

SELECT GetMetadataPropertyValue(ehInput, '[EventHub].[EventEnqueuedUtcTime]') AS mytime FROM ehInput

SELECT GetMetadataPropertyValue(ehInput, 'EventHub') AS myEHPropertiesRecord FROM ehInput

路由至事件中樞端點時,IoT 中樞屬性

使用IoT 中樞路由功能至事件中樞端點時,從事件中樞讀取屬性即可使用中繼資料屬性。 在此情況下,可以擷取下列屬性:

  • IoTConnectionDeviceId
  • IoTAuthMethod
  • IoTAuthGenerationId
  • IoTEnqueueTime
  • IoTMessageSource
  • IoTConnectionModuleId
  • IoTInterfaceName

範例: SELECT GetMetadataPropertyValue(ehInput, '[EventHub].[IoTConnectionDeviceId]') AS myIoTDeviceId FROM ehInput

您可以透過使用者屬性擷取透過IoT 中樞訊息擴充新增的屬性。

IoT 中樞的預設中繼資料屬性

  • ConnectionDeviceId

  • AuthMethod

  • AuthGenerationId

  • EnqueueTime

  • MessageSource

  • ConnectionModuleId

  • InterfaceName

  • CorrelationId

  • MessageId

  • ConnectionDeviceGenerationId

範例:

從 IoT 中樞擷取 EnqueuedTime:

SELECT GetMetadataPropertyValue(iotInput, 'IoTHub.EnqueuedTime') AS myEnqueuedTime FROM iotInput

SELECT GetMetadataPropertyValue(iotInput, 'IoTHub') AS iotRecord FROM iotInput

Blob 輸入的預設中繼資料屬性:

  • BlobName
  • BlobLastModifiedUtcTime
  • PartitionId

範例 SELECT GetMetadataPropertyValue(blobInput, 'BlobName') AS myBlobName FROM blobInput

使用者屬性

使用 GetMetadataPropertyValue 存取傳入 EventHub/IoT/Blob 訊息上名為 SenderClientId 的自訂使用者屬性,如下列範例所示。

此外,也可以使用 GetMetadataPropertyValue 擷取使用IoT 中樞訊息擴充來新增的對應項屬性和擴充屬性。

範例

若要從事件中樞輸入查詢,
SELECT Name, GetMetadataPropertyValue(ehInput, '[User].[SenderClientId]') FROM ehInput

若要從IoT 中樞輸入查詢,
SELECT Name, GetMetadataPropertyValue(iotInput, '[User].[SenderClientId]') FROM iotInput

若要從 Blob 輸入查詢,
SELECT Name, GetMetadataPropertyValue(blobInput, '[User].[SenderClientId]') FROM blobInput

若要取得所有使用者屬性做為記錄,

針對事件中樞:
SELECT Name, GetMetadataPropertyValue(ehInput, '[User]') AS userprops FROM ehInput

針對IoT 中樞:
SELECT Name, GetMetadataPropertyValue(iotInput, '[User]') AS userprops FROM iotInput

針對 Blob 輸入:
SELECT Name, GetMetadataPropertyValue(blobInput, '[User]') AS userprops FROM blobInput

Unique EventId 屬性

EventId 屬性會針對輸入事件建立唯一識別碼 (Guid) ,這對於主鍵用途很有用。 EventId 在非隨機) (一致;如果您回到時間並重新讀取相同的輸入事件,串流分析將會產生相同的識別碼。

範例

SELECT GetMetadataPropertyValue(ehInput, 'EventId') AS eventPrimaryKey FROM ehInput

限制事項

GetMetadataPropertyValue 具有下列使用限制:

  • SELECT * 查詢中使用 會導致重複的資料行。 若要防止重複的資料行,請在 SELECT 語句中個別列出資料行。

  • 不論查詢中使用的大小寫為何,您提供中繼資料屬性值的別名都會小寫。 例如, SELECT GetMetadataPropertyValue(ehInput, 'EventId') AS eventPrimaryKey 輸出為 eventprimarykey 。 若要保留大小寫,請使用相容性層級 1.2。

  • 此函式無法在預覽結果窗格中Azure 入口網站運作,包括測試查詢函式。

  • 將資料送達 ASA 之前,重新命名組織承載欄位。 如果承載功能變數名稱與系統中繼資料功能變數名稱相同,則會覆寫它。

  • 不支援 EventHub 事件中繼資料的 MessageId 和 CorrelationId。