共用方式為


GetMetadataPropertyValue

✅ 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。