Azure Digital Twins-Abfrage-Plug-In für Azure Data Explorer

Dieser Artikel erklärt das Azure Digital Twin Query Plugin für Azure Data Explorer, wie man Azure Data Explorer IoT-Daten mit Azure Digital Twins verwendet, wie man Daten zwischen Azure Data Explorer und Azure Digital Twins abbildet und mehr.

Mit dem Azure Digital Twins-Plug-In für Azure Data Explorer können Sie Azure Data Explorer-Abfragen ausführen, die auf Daten in Azure Digital Twins-Graph- und Azure Data Explorer-Zeitreihendatenbanken zugreifen und diese kombinieren. Verwenden Sie das Plug-In, um unterschiedliche Zeitreihendaten zu kontextualisieren, indem Sie über digitale Zwillinge und deren Beziehungen hinweg schlussfolgern, um Erkenntnisse über das Verhalten modellierter Umgebungen zu erhalten.

Mit diesem Plugin können Sie zum Beispiel eine Kusto-Abfrage schreiben, die:

  1. Wählt digitale Zwillinge von Interesse über das Azure Digital Twins Query Plugin aus,
  2. Verbindet diese Zwillinge mit den entsprechenden Zeitreihen in Azure Data Explorer und dann
  3. Führt für diese Zwillinge erweiterte Zeitreihenanalysen durch.

Das Kombinieren von Daten aus einem Zwillingsgraphen in Azure Digital Twins mit Zeitreihendaten in Azure Data Explorer kann Ihnen helfen, das Betriebsverhalten verschiedener Teile Ihrer Lösung zu verstehen.

Verwenden des Plug-Ins

Sie können das Plug-In mit dem folgenden Befehl in einer Kusto-Abfrage aufrufen. Es gibt zwei Platzhalter, <Azure-Digital-Twins-endpoint> und <Azure-Digital-Twins-query>, bei denen es sich um Zeichenfolgen handelt, die den Azure Digital Twins-Instanzendpunkt bzw. die Azure Digital Twins-Abfrage darstellen.

evaluate azure_digital_twins_query_request(<Azure-Digital-Twins-endpoint>, <Azure-Digital-Twins-query>) 

Das Plug-In funktioniert durch Aufrufen der Azure Digital Twins Query-API, und die Abfragesprachenstruktur ist mit zwei Ausnahmen identisch mit der Verwendung der API:

  • Der Platzhalter * in der Klausel SELECT wird nicht unterstützt. Stattdessen sollten bei Azure Digital Twin-Abfragen, die mit dem Plug-In ausgeführt werden, in der SELECT-Klausel Aliase verwendet werden.

    Sehen Sie sich beispielsweise die folgende Azure Digital Twins-Abfrage an, die mithilfe der API ausgeführt wird:

    SELECT * FROM DIGITALTWINS
    

    Um diese Abfrage bei Verwendung des Plug-Ins auszuführen, sollte sie wie folgt umgeschrieben werden:

    SELECT T FROM DIGITALTWINS T
    
  • Spaltennamen, die vom Plug-In zurückgegeben werden, beginnen möglicherweise nicht mit $. Die Verwendung von Aliasen in der SELECT-Klausel hilft auch dabei, dieses Szenario zu vermeiden.

    Sehen Sie sich beispielsweise die folgende Azure Digital Twins-Abfrage an, die mithilfe der API ausgeführt wird:

    SELECT T.$dtId, T.Temperature FROM DIGITALTWINS T
    

    Um diese Abfrage bei Verwendung des Plug-Ins auszuführen, sollte sie wie folgt umgeschrieben werden:

    SELECT T.$dtId as tid, T.Temperature FROM DIGITALTWINS T
    

Wichtig

Dem Benutzer des Plug-Ins muss die Azure Digital Twins Data Reader-Rolle oder die Azure Digital Twins Data Owner-Rolle gewährt werden, da das Microsoft Entra-Token des Benutzers für die Authentifizierung verwendet wird. Informationen zum Zuweisen dieser Rolle finden Sie unter Sicherheit für Azure Digital Twins-Lösungen.

Weitere Informationen zur Verwendung des Plug-Ins finden Sie in der Kusto-Dokumentation für das azure_digital_twins_query_request-Plug-In.

Beispielabfragen und eine exemplarische Vorgehensweise mit Beispieldaten finden Sie unter Azure Digital Twins query plugin for Azure Data Explorer: Sample queries and walkthrough (Azure Digital Twins-Abfrage-Plug-In für Azure Data Explorer: Beispielabfragen und exemplarische Vorgehensweise) auf GitHub.

Erfassen von Azure Digital Twins-Daten in Azure Data Explorer

Bevor Sie Abfragen mit dem Plug-In durchführen, müssen Sie Ihre Azure Digital Twins-Daten in Azure Data Explorer erfassen. Hierfür gibt es im Wesentlichen zwei Möglichkeiten: Über den Datenverlauf oder über die direkte Erfassung. In den folgenden Abschnitten werden diese Optionen ausführlicher beschrieben.

Erfassung mit dem Datenverlauf

Die einfachste Möglichkeit zum Erfassen von IoT-Daten aus Azure Digital Twins in Azure Data Explorer ist die Verwendung des Datenverlaufsfeatures. Mit diesem Feature können Sie eine Verbindung zwischen Ihrer Azure Digital Twins-Instanz und einem Azure Data Explorer-Cluster einrichten und Graph-Updates (einschließlich Twin Property Updates, Twin-Lifecycle-Ereignisse und Beziehungslebenszyklusereignisse) automatisch an den Cluster historisiert werden. Dies ist eine gute Wahl, wenn Sie Geräte-Telemetriedaten verwenden, um Ihre digitalen Zwillinge zum Leben zu erwecken. Weitere Informationen zu diesem Feature finden Sie unter Datenverlauf (mit Azure Data Explorer).

Direkte Erfassung

Darüber hinaus können Sie IoT-Daten direkt in Ihrem Azure Data Explorer-Cluster aus IoT Hub oder aus anderen Quellen erfassen. Anschließend wird der Azure Digital Twins-Graph verwendet, um die Zeitreihendaten mithilfe verknüpfter Azure Digital Twins/Azure Data Explorer-Abfragen zu kontextualisieren. Diese Option ist eine gute Wahl für Workloads mit direkter Erfassung – Sie können jedoch die ereignisbasierte Architektur von Azure Digital Twins nicht nutzen, um andere Zwillinge zu aktualisieren, nachgelagerte Dienste auszulösen oder Benachrichtigungen auszugeben, wenn sich der Status von Zwillingen ändert. Weitere Informationen zu diesem Prozess finden Sie im restlichen Teil dieses Abschnitts.

Zuordnen von Daten zwischen Azure Data Explorer und Azure Digital Twins

Wenn Sie Zeitreihendaten direkt in Azure Data Explorer erfassen, müssen Sie diese unformatierten Zeitreihendaten möglicherweise in ein Schema konvertieren, das für verknüpfte Azure Digital Twins/Azure Data Explorer-Abfragen geeignet ist.

Mit einer Updaterichtlinie in Azure Data Explorer können Sie Daten automatisch transformieren und an eine Zieltabelle anfügen, wenn neue Daten in eine Quelltabelle eingefügt werden.

Wenn sich die Sensor-ID in Ihren Geräte-Telemetriedaten von der entsprechenden Zwillings-ID in Azure Digital Twins unterscheidet, können Sie eine Aktualisierungsrichtlinie verwenden, um Ihre Rohzeitreihendaten mit der Twin-ID zu bereichern und in einer Zieltabelle zu speichern. Unter Verwendung der Zwillings-ID kann die Zieltabelle dann mit den vom Azure Digital Twins-Plug-In ausgewählten digitalen Zwillingen verknüpft werden.

Angenommen, Sie haben beispielsweise die folgende Tabelle erstellt, um die unformatierten Zeitreihendaten aufzunehmen, die in Ihrer Azure Data Explorer-Instanz eingehen.

.create-merge table rawData (Timestamp:datetime, someId:string, Value:string, ValueType:string)  

Sie könnten eine Zuordnungstabelle erstellen, um Zeitreihen-IDs mit Zwillings-IDs und anderen optionalen Feldern in Beziehung zu setzen.

.create-merge table mappingTable (someId:string, twinId:string, otherMetadata:string) 

Dann erstellen Sie eine Zieltabelle, um die angereicherten Zeitreihendaten aufzunehmen.

.create-merge table timeseriesSilver (twinId:string, Timestamp:datetime, someId:string, otherMetadata:string, ValueNumeric:real, ValueString:string)  

Als Nächstes erstellen Sie eine Funktion Update_rawData, um die Rohdaten anzureichern, indem Sie sie mit der Zuordnungstabelle verknüpfen. Auf diese Weise wird die Zwillings-ID in die resultierende Zieltabelle aufgenommen.

.create-or-alter function with (folder = "Update", skipvalidation = "true") Update_rawData() { 
rawData 
| join kind=leftouter mappingTable on someId 
| project 
    Timestamp, ValueNumeric = toreal(Value), ValueString = Value, ... 
} 

Als Letztes erstellen Sie eine Updaterichtlinie zum Aufrufen der Funktion sowie zum Aktualisieren der Zieltabelle.

.alter table timeseriesSilver policy update 
@'[{"IsEnabled": true, "Source": "rawData", "Query": "Update_rawData()", "IsTransactional": false, "PropagateIngestionProperties": false}]' 

Nachdem die Zieltabelle erstellt wurde, können Sie das Azure Digital Twins-Plug-In verwenden, um die für Sie interessanten Zwillinge auszuwählen und sie dann mit Zeitreihendaten in der Zieltabelle zu verknüpfen.

Beispielschema

Hier ein Beispiel für ein Schema, das für die Darstellung gemeinsamer Daten verwendet werden kann. Das Beispiel folgt dem Azure Data Explorer-Datenverlaufsschema für Zwillingseigenschaftenupdates.

TimeStamp SourceTimeStamp TwinId ModelId Name Value RelationshipTarget RelationshipID
2021-02-01 17:24 01.02.2021 17:11 ConfRoomTempSensor dtmi:com:example:TemperatureSensor;1 Temperatur 301,0

Eigenschaften digitaler Zwillinge werden als Schlüssel-Wert-Paare (name, value) gespeichert. name und value werden als dynamische Datentypen gespeichert.

Das Schema unterstützt auch das Speichern von Eigenschaften für Beziehungen in den Feldern relationshipTarget und relationshipID. Das Schlüssel-Wert-Schema vermeidet, für jede Zwillingseigenschaft eine Spalte erstellen zu müssen.

Darstellen von Eigenschaften mit mehreren Feldern

Möglicherweise möchten Sie eine Eigenschaft in Ihrem Schema mit mehreren Feldern speichern. Diese Eigenschaften werden dargestellt, indem ein JSON-Objekt als value in Ihrem Schema gespeichert wird.

Wenn Sie beispielsweise eine Eigenschaft mit drei Feldern für „roll“ (rollen), „pitch“ (nicken) und „yaw“ (gieren) darstellen möchten, sähe das Wertobjekt wie folgt aus: {"roll": 20, "pitch": 15, "yaw": 45}.

Nächste Schritte