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

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

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 als eventprimarykeyausgegeben. 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.