GetMetadataPropertyValue (Azure Stream Analytics)

特定のプロパティの入力データを照会します。 プロパティには、アダプター、ユーザー、および一意の EventId の 3 種類があります。

アダプターメタデータプロパティ

特定の入力固有のプロパティには、GetMetadataPropertyValue 関数からアクセスできます。 さらに、すべてのプロパティに 1 つのレコードとしてアクセスできます。

注意

現時点では、この関数はAzure portalでテストできません (空の結果が返されます)。 Visual Studio Code の ASA 拡張機能を使用して、 ライブ データを使用してクエリでこの関数をテストできます。

Event Hubs の既定のメタデータ プロパティ

  • EventEnqueuedUtcTime
  • EventProcessedUtcTime
  • PartitionId
  • Offset
  • SequenceNumber
  • パーティション キー
  • パブリッシャー(受信イベントで使用可能な場合)

例 :

Event Hubs から EventEnqueuedUtcTime を取得します。

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

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

Event Hubs エンドポイントにルーティングされるときにプロパティをIoT Hubする

Event Hubs エンドポイントへのルーティング機能IoT Hub使用する場合は、Event Hubs からプロパティを読み取ることでメタデータ プロパティを使用できます。 この場合、取得できる次のプロパティ。

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

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

メッセージ エンリッチメントIoT Hub使用して追加されたプロパティは、ユーザー プロパティを使用して取得できます。

IoT Hubの既定のメタデータ プロパティ

  • ConnectionDeviceId

  • AuthMethod

  • AuthGenerationId

  • EnqueueTime

  • [MessageSource]

  • ConnectionModuleId

  • InterfaceName

  • CorrelationId

  • MessageId

  • ConnectionDeviceGenerationId

例 :

IoT Hubから 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

ユーザー プロパティ

次の例に示すように、受信 EventHub/IoT/Blob メッセージに設定された SenderClientId というカスタム ユーザー プロパティには、GetMetadataPropertyValue を使用してアクセスできます。

さらに、IoT Hub メッセージ エンリッチメントを使用して追加されたツイン プロパティとエンリッチメントされたプロパティは、GetMetadataPropertyValue を使用して取得することもできます。

Event Hub 入力からクエリを実行するには、
SELECT Name, GetMetadataPropertyValue(ehInput, '[User].[SenderClientId]') FROM ehInput

IoT Hub入力からクエリを実行するには、
SELECT Name, GetMetadataPropertyValue(iotInput, '[User].[SenderClientId]') FROM iotInput

BLOB 入力からクエリを実行するには、
SELECT Name, GetMetadataPropertyValue(blobInput, '[User].[SenderClientId]') FROM blobInput

すべてのユーザー プロパティをレコードとして取得するには、

Event Hub の場合:
SELECT Name, GetMetadataPropertyValue(ehInput, '[User]') AS userprops FROM ehInput

IoT Hub の場合:
SELECT Name, GetMetadataPropertyValue(iotInput, '[User]') AS userprops FROM iotInput

BLOB 入力の場合:
SELECT Name, GetMetadataPropertyValue(blobInput, '[User]') AS userprops FROM blobInput

一意の EventId プロパティ

EventId プロパティは、入力イベントの一意の ID (Guid) を作成します。これは、主キーの目的に役立ちます。 EventId は一貫性があります (ランダムではありません)。時間を遡って同じ入力イベントを再読み取りすると、Stream Analytics によって同じ ID が生成されます。

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

制限事項と制約事項

GetMetadataPropertyValue には、次の使用制限があります。

  • クエリで を使用 SELECT * すると、列が重複します。 列が重複しないようにするには、SELECT ステートメントで列を個別に一覧表示します。

  • メタデータ プロパティ値に指定するエイリアスは、クエリで使用される大文字と小文字に関係なく小文字になります。 たとえば、 SELECT GetMetadataPropertyValue(ehInput, 'EventId') AS eventPrimaryKey は として eventprimarykey出力されます。 大文字と小文字を保持するには、互換性レベル 1.2 を使用します。

  • この関数は、テスト クエリ関数を含め、Azure portal プレビューの結果ウィンドウでは機能しません。

  • データが ASA に到着する前に、origial ペイロード フィールドの名前を変更します。 ペイロード フィールド名は、システム メタデータ フィールド名と同じ場合に上書きされます。

  • EventHub のイベント メタデータの MessageId と CorrelationId はサポートされていません。