GetMetadataPropertyValue (Azure Stream Analytics)
Fragt Eingabedaten für bestimmte Eigenschaften ab. Es gibt drei Arten von Eigenschaften: Adapter, Benutzer und Eindeutige EventId.
Eigenschaften von Adaptermetadaten
Auf bestimmte eingabespezifische Eigenschaften kann über die GetMetadataPropertyValue-Funktion zugegriffen werden. Darüber hinaus kann auf alle Eigenschaften als einzelner Datensatz zugegriffen werden.
Hinweis
Derzeit kann diese Funktion nicht auf dem Azure-Portal getestet werden (es werden leere Ergebnisse zurückgegeben). Sie können die ASA-Erweiterung für Visual Studio Code verwenden, um diese Funktion in Ihrer Abfrage mithilfe von Livedaten zu testen.
Standardmetadateneigenschaften für Event Hubs
- EventEnqueuedUtcTime
- EventProcessedUtcTime
- PartitionId
- Offset
- SequenceNumber
- PartitionKey
- Publisher, wenn im eingehenden Ereignis verfügbar
Beispiele:
Rufen Sie EventEnqueuedUtcTime aus Event Hubs ab:
SELECT GetMetadataPropertyValue(ehInput, '[EventHub].[EventEnqueuedUtcTime]') AS mytime FROM ehInput
So fragen Sie alle möglichen adapterbezogenen Eigenschaften als Datensatz ab:
SELECT GetMetadataPropertyValue(ehInput, 'EventHub') AS myEHPropertiesRecord FROM ehInput
IoT Hub Eigenschaften bei der Weiterleitung an Event Hubs-Endpunkte
Wenn Sie IoT Hub Routingfunktion an Event Hubs-Endpunkte verwenden, stehen Metadateneigenschaften durch Lesen von Eigenschaften aus Event Hubs zur Verfügung. In diesem Fall können die folgenden Eigenschaften abgerufen werden:
- IoTConnectionDeviceId
- IoTAuthMethod
- IoTAuthGenerationId
- IoTEnqueueTime
- IoTMessageSource
- IoTConnectionModuleId
- IoTInterfaceName
Beispiel: SELECT GetMetadataPropertyValue(ehInput, '[EventHub].[IoTConnectionDeviceId]') AS myIoTDeviceId FROM ehInput
Eigenschaften, die über IoT Hub Nachrichtenanreicherung hinzugefügt werden, können über Benutzereigenschaften abgerufen werden.
Standardmetadateneigenschaften für IoT Hub
ConnectionDeviceId
AuthMethod
AuthGenerationId
EnqueueTime
MessageSource
ConnectionModuleId
InterfaceName
CorrelationId
MessageId
ConnectionDeviceGenerationId
Beispiele:
Rufen Sie EnqueuedTime aus IoT Hub ab:
SELECT GetMetadataPropertyValue(iotInput, 'IoTHub.EnqueuedTime') AS myEnqueuedTime FROM iotInput
So fragen Sie alle möglichen adapterbezogenen Eigenschaften als Datensatz ab:
SELECT GetMetadataPropertyValue(iotInput, 'IoTHub') AS iotRecord FROM iotInput
Standardmetadateneigenschaften für die Blobeingabe:
- BlobName
- BlobLastModifiedUtcTime
- PartitionId
Beispiel: SELECT GetMetadataPropertyValue(blobInput, 'BlobName') AS myBlobName FROM blobInput
Benutzereigenschaften
Eine benutzerdefinierte Benutzereigenschaft namens SenderClientId, die für eingehende EventHub/IoT/Blob-Nachrichten festgelegt ist, wird mit GetMetadataPropertyValue zugänglich gemacht, wie im folgenden Beispiel gezeigt.
Darüber hinaus können Zwillingseigenschaften und angereicherte Eigenschaften, die mithilfe IoT Hub Nachrichtenanreicherung hinzugefügt wurden, auch mit GetMetadataPropertyValue abgerufen werden.
Beispiele
So fragen Sie von einer Event Hub-Eingabe ab:
SELECT Name, GetMetadataPropertyValue(ehInput, '[User].[SenderClientId]') FROM ehInput
So fragen Sie von einer IoT Hub-Eingabe ab:
SELECT Name, GetMetadataPropertyValue(iotInput, '[User].[SenderClientId]') FROM iotInput
So fragen Sie aus einer Blobeingabe ab:
SELECT Name, GetMetadataPropertyValue(blobInput, '[User].[SenderClientId]') FROM blobInput
Um alle Benutzereigenschaften als Datensatz abzurufen,
Für Event Hub:
SELECT Name, GetMetadataPropertyValue(ehInput, '[User]') AS userprops FROM ehInput
Für IoT Hub:
SELECT Name, GetMetadataPropertyValue(iotInput, '[User]') AS userprops FROM iotInput
Für Blobeingaben:
SELECT Name, GetMetadataPropertyValue(blobInput, '[User]') AS userprops FROM blobInput
Unique EventId-Eigenschaft
Die EventId-Eigenschaft erstellt eine eindeutige ID (Guid) für ein Eingabeereignis, die für Primärschlüsselzwecke nützlich sein kann. EventId ist konsistent (nicht zufällig); Wenn Sie in die Zeit zurückkehren und dasselbe Eingabeereignis erneut lesen, erzeugt Stream Analytics dieselbe ID.
Beispiel
SELECT GetMetadataPropertyValue(ehInput, 'EventId') AS eventPrimaryKey FROM ehInput
Einschränkungen
GetMetadataPropertyValue weist die folgenden Einschränkungen bei der Verwendung auf:
Die Verwendung
SELECT *
in Ihrer Abfrage verursacht doppelte Spalten. Um doppelte Spalten zu verhindern, listen Sie Spalten einzeln in Ihrer SELECT-Anweisung auf.Der Alias, den Sie ihrem Metadateneigenschaftswert zuweisen, wird unabhängig von der in Ihrer Abfrage verwendeten Groß-/Kleinschreibung verwendet. Beispielsweise
SELECT GetMetadataPropertyValue(ehInput, 'EventId') AS eventPrimaryKey
wird alseventprimarykey
ausgegeben. Verwenden Sie den Kompatibilitätsgrad 1.2, um die Groß-/Kleinschreibung beizubehalten.Diese Funktion funktioniert nicht im Ergebnisbereich Azure-Portal Vorschau, einschließlich Testabfragefunktionen.
Benennen Sie die Felder der Origialnutzlast um, bevor die Daten bei ASA eingehen. Der Name des Nutzlastfelds wird überschrieben, wenn er mit dem Namen des Systemmetadatenfelds identisch ist.
MessageId und CorrelationId der EventHub-Ereignismetadaten werden nicht unterstützt.