✅ Azure 串流分析 ✅ 網狀架構事件串流
查詢特定屬性的輸入數據。 屬性有三種類型:Adapter、User 和 Unique EventId。
配接器元數據屬性
GetMetadataPropertyValue 函式可以存取特定輸入的屬性。 此外,所有屬性都可以當做單一記錄來存取。
備註
此時,無法在 Azure 入口網站上測試此函式(它會傳回空的結果)。 您可以使用適用於 Visual Studio Code 的 ASA 延伸模組,使用 即時數據在查詢中測試此函式。
事件中樞的預設元數據屬性
- EventEnqueuedUtcTime
- EventProcessedUtcTime
- 分區識別碼
- 抵消
- 序列號碼
- 分區鍵
- 發行者,當傳入事件中可用時
範例:
從事件中樞擷取 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
訊息編號
ConnectionDeviceGenerationId
範例:
從 IoT 中樞擷取 EnqueuedTime:
SELECT GetMetadataPropertyValue(iotInput, 'IoTHub.EnqueuedTime') AS myEnqueuedTime FROM iotInput
若要將所有 可能的 配接器相關屬性查詢為記錄:
SELECT GetMetadataPropertyValue(iotInput, 'IoTHub') AS iotRecord FROM iotInput
Blob 輸入的預設元資料屬性:
- BlobName
- BlobLastModifiedUtcTime
- 分區識別碼
範例 SELECT GetMetadataPropertyValue(blobInput, 'BlobName') AS myBlobName FROM blobInput
使用者屬性
在傳入的 EventHub/IoT/Blob 訊息上設定了名為 SenderClientId 的自定義使用者屬性,可使用 GetMetadataPropertyValue 來存取,如下列範例所示。
此外,您也可以使用 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。