✅ 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 はサポートされていません。