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。