次の方法で共有


メタデータプロパティ値を取得

✅ Azure Stream Analytics ✅ Fabric Eventstream

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

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

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

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

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

  • EventEnqueuedUtcTime
  • EventProcessedUtcTime
  • PartitionId
  • オフセット
  • シーケンス番号
  • パーティションキー
  • パブリッシャー (受信イベントで使用可能な場合)

例:

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

  • メッセージID

  • 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

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

イベント ハブの場合:
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 ステートメントで列を個別に一覧表示します。

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

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

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

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