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