Migrieren von Azure Time Series Insights Gen2-Umgebungen zu Real-Time Intelligence in Microsoft Fabric
Hinweis
Der Time Series Insights-Dienst wird am 7. Juli 2024 eingestellt. Erwägen Sie, vorhandene Umgebungen so bald wie möglich zu alternativen Lösungen zu migrieren. Weitere Informationen zur Einstellung und Migration finden Sie in unserer Dokumentation.
Übersicht
Eventhouse ist die Zeitreihendatenbank in Real-Time Intelligence. Sie dient als Ziel für die Migration von Daten aus Time Series Insights.
Empfehlungen für die Migration auf hoher Ebene
Funktion | Migration empfohlen |
---|---|
Erfassen von JSON aus dem Hub mit Vereinfachung und Escapezeichen | Abrufen von Daten aus Azure Event Hubs |
Öffnen von Cold Storage | Verfügbarkeit von Eventhouse OneLake |
Power BI-Connector | Verwenden Sie Eventhouse Power BI Connector. Manuelles erneutes Generieren von TSQ in KQL |
Spark-Connector | Migrieren von Daten zu Eventhouse. Verwenden eines Notebooks mit Apache Spark, um ein Eventhouse abzufragen oder die Daten in Ihrem Lakehouse mit einem Notebook zu erkunden |
Massenupload | Abrufen von Daten aus Azure Storage |
Time Series-Modell | Kann als JSON-Datei exportiert werden Kann in Eventhouse importiert werden. Kusto Graph-Semantik ermöglicht modellieren, durchlaufen und analysieren der Hierarchie des Zeitreihenmodells als Diagramm |
Zeitreihen-Explorer | Echtzeit-Dashboard, Power BI-Bericht oder Schreiben eines benutzerdefinierten Dashboards mithilfe von KustoTrender |
Abfragesprache | Erneutes Generieren von Abfragen in KQL |
Migrieren von Telemetriedaten
Um die Kopie aller Daten in der Umgebung abzurufen, verwenden Sie den Ordner PT=Time
im Speicherkonto. Weitere Informationen finden Sie unter Datenspeicher.
Migrationsschritt 1: Abrufen von Statistiken zu Telemetriedaten
Daten
- Übersicht über die Umgebung
- Aufzeichnen der Umgebungs-ID aus dem ersten Teil des FQDN für den Datenzugriff (z. B. d390b0b0-1445-4c0c-8365-68d6382c1c2a aus .env.crystal-dev.windows-int.net)
- Übersicht über die Umgebung -> Speicherkonfiguration -> Speicherkonto
- Verwenden von Storage-Explorer zum Abrufen von Ordnerstatistiken
- Aufzeichnen von Größe und Anzahl der Blobs im Ordner
PT=Time
- Aufzeichnen von Größe und Anzahl der Blobs im Ordner
Migrationsschritt 2 – Migrieren von Daten zu Eventhouse
Ein Eventhouse erstellen
Um ein Eventhouse für Ihren Migrationsprozess einzurichten, führen Sie die Schritte zum Erstellen eines Eventhouse aus.
Datenerfassung
Um Daten für das Speicherkonto abzurufen, das Ihrer Time Series Insights-Instanz entspricht, führen Sie die Schritte zum Abrufen von Daten aus Azure Storage aus.
Stellen Sie sicher, dass Sie:
Wählen Sie den entsprechenden Container aus und stellen Sie dessen URI zusammen mit dem erforderlichen SAS-Token oder Kontoschlüssel bereit.
Konfigurieren Sie den Ordnerpfad für Dateifilter als
V=1/PT=Time
, um die relevanten Blobs zu filtern.Überprüfen Sie das abgeleitete Schema, und entfernen Sie alle selten abgefragten Spalten, während sie mindestens den Zeitstempel, die TSID-Spalten und Werte beibehalten. Um sicherzustellen, dass alle Ihre Daten in Eventhouse kopiert werden, fügen Sie eine weitere Spalte hinzu, und verwenden Sie die DropMappedFields-Zuordnungstransformation.
Schließen Sie den Aufnahmevorgang ab.
Abfragen der Daten
Nachdem Sie die Daten erfolgreich aufgenommen haben, können Sie damit beginnen, sie mithilfe eines KQL-Abfragesets zu untersuchen. Wenn Sie auf die Daten aus Ihrer benutzerdefinierten Clientanwendung zugreifen müssen, stellt Eventhouse SDKs für wichtige Programmiersprachen wie C# (Link), Java (Link) und Node.js (Link) bereit.
Migrieren des Time Series Model zu Azure Data Explorer
Das Modell kann im JSON-Format über die TSI-Explorer-Benutzeroberfläche oder die TSM-Batch-API aus der TSI-Umgebung heruntergeladen werden. Anschließend kann das Modell in Eventhouse importiert werden.
Laden Sie TSM von der TSI-Benutzeroberfläche herunter.
Löschen Sie die ersten drei Zeilen mit Visual Studio Code oder einem anderen Editor.
Suchen und ersetzen Sie mithilfe von Visual Studio Code oder einem anderen Editor als RegEx
\},\n \{
durch}{
Erfassen Sie ihn als JSON in ADX als separate Tabelle mithilfe von Abrufen von Daten aus einer einzelnen Datei.
Nachdem Sie Ihre Zeitreihendaten nach Eventhouse in Fabric Real-Time Intelligence migriert haben, können Sie die Leistungsfähigkeit der Kusto Graph-Semantik verwenden, um Ihre Daten kontextualisieren und analysieren zu können. Mit der Kusto Graph-Semantik können Sie die Hierarchie Ihres Zeitreihenmodells als Diagramm modellieren, durchlaufen und analysieren. Mithilfe der Kusto Graph-Semantik können Sie Einblicke in die Beziehungen zwischen verschiedenen Entitäten in Ihren Datenreihen erhalten, z. B. Objekte, Websites und Datenpunkte. Diese Erkenntnisse helfen Ihnen, die Abhängigkeiten und Interaktionen zwischen verschiedenen Komponenten Ihres Systems zu verstehen.
Übersetzen von Zeitreihenabfragen (TSQ) in KQL
GetEvents
{
"getEvents": {
"timeSeriesId": [
"assest1",
"siteId1",
"dataId1"
],
"searchSpan": {
"from": "2021-11-01T00:00:0.0000000Z",
"to": "2021-11-05T00:00:00.000000Z"
},
"inlineVariables": {},
}
}
events
| where timestamp >= datetime(2021-11-01T00:00:0.0000000Z) and timestamp < datetime(2021-11-05T00:00:00.000000Z)
| where assetId_string == "assest1" and siteId_string == "siteId1" and dataid_string == "dataId1"
| take 10000
GetEvents mit Filter
{
"getEvents": {
"timeSeriesId": [
"deviceId1",
"siteId1",
"dataId1"
],
"searchSpan": {
"from": "2021-11-01T00:00:0.0000000Z",
"to": "2021-11-05T00:00:00.000000Z"
},
"filter": {
"tsx": "$event.sensors.sensor.String = 'status' AND $event.sensors.unit.String = 'ONLINE"
}
}
}
events
| where timestamp >= datetime(2021-11-01T00:00:0.0000000Z) and timestamp < datetime(2021-11-05T00:00:00.000000Z)
| where deviceId_string== "deviceId1" and siteId_string == "siteId1" and dataId_string == "dataId1"
| where ['sensors.sensor_string'] == "status" and ['sensors.unit_string'] == "ONLINE"
| take 10000
GetEvents mit projizierter Variable
{
"getEvents": {
"timeSeriesId": [
"deviceId1",
"siteId1",
"dataId1"
],
"searchSpan": {
"from": "2021-11-01T00:00:0.0000000Z",
"to": "2021-11-05T00:00:00.000000Z"
},
"inlineVariables": {},
"projectedVariables": [],
"projectedProperties": [
{
"name": "sensors.value",
"type": "String"
},
{
"name": "sensors.value",
"type": "bool"
},
{
"name": "sensors.value",
"type": "Double"
}
]
}
}
events
| where timestamp >= datetime(2021-11-01T00:00:0.0000000Z) and timestamp < datetime(2021-11-05T00:00:00.000000Z)
| where deviceId_string== "deviceId1" and siteId_string == "siteId1" and dataId_string == "dataId1"
| take 10000
| project timestamp, sensorStringValue= ['sensors.value_string'], sensorBoolValue= ['sensors.value_bool'], sensorDoublelValue= ['sensors.value_double']
AggregateSeries
{
"aggregateSeries": {
"timeSeriesId": [
"deviceId1"
],
"searchSpan": {
"from": "2021-11-01T00:00:00.0000000Z",
"to": "2021-11-05T00:00:00.0000000Z"
},
"interval": "PT1M",
"inlineVariables": {
"sensor": {
"kind": "numeric",
"value": {
"tsx": "coalesce($event.sensors.value.Double, todouble($event.sensors.value.Long))"
},
"aggregation": {
"tsx": "avg($value)"
}
}
},
"projectedVariables": [
"sensor"
]
}
events
| where timestamp >= datetime(2021-11-01T00:00:00.0000000Z) and timestamp < datetime(2021-11-05T00:00:00.0000000Z)
| where deviceId_string == "deviceId1"
| summarize avgSensorValue= avg(coalesce(['sensors.value_double'], todouble(['sensors.value_long']))) by bin(IntervalTs = timestamp, 1m)
| project IntervalTs, avgSensorValue
AggregateSeries mit Filter
{
"aggregateSeries": {
"timeSeriesId": [
"deviceId1"
],
"searchSpan": {
"from": "2021-11-01T00:00:00.0000000Z",
"to": "2021-11-05T00:00:00.0000000Z"
},
"filter": {
"tsx": "$event.sensors.sensor.String = 'heater' AND $event.sensors.location.String = 'floor1room12'"
},
"interval": "PT1M",
"inlineVariables": {
"sensor": {
"kind": "numeric",
"value": {
"tsx": "coalesce($event.sensors.value.Double, todouble($event.sensors.value.Long))"
},
"aggregation": {
"tsx": "avg($value)"
}
}
},
"projectedVariables": [
"sensor"
]
}
}
events
| where timestamp >= datetime(2021-11-01T00:00:00.0000000Z) and timestamp < datetime(2021-11-05T00:00:00.0000000Z)
| where deviceId_string == "deviceId1"
| where ['sensors.sensor_string'] == "heater" and ['sensors.location_string'] == "floor1room12"
| summarize avgSensorValue= avg(coalesce(['sensors.value_double'], todouble(['sensors.value_long']))) by bin(IntervalTs = timestamp, 1m)
| project IntervalTs, avgSensorValue
Power BI
Es gibt keinen automatisierten Prozess für die Migration von Power BI-Berichten, die auf Time Series Insights basieren. Alle Abfragen, die auf Daten basieren, die in Time Series Insights gespeichert sind, müssen zu Eventhouse migriert werden.
Um effiziente Zeitreihenberichte in Power BI zu erstellen, empfehlen wir, auf die folgenden informativen Blogartikel zu verweisen:
- Funktionen für Eventhouse-Zeitreihen in Power BI
- Verwenden dynamischer M-Parameter ohne die meisten Einschränkungen
- Zeitbereichs-/Dauerwerte in KQL, Power Query und Power BI
- KQL-Abfrageeinstellungen in Power BI
- Filtern und Visualisieren von Kusto-Daten in Ortszeit
- Nahezu Echtzeitberichte in PBI + Kusto
- Power BI-Modellierung mit ADX – Spickzettel
In diesen Ressourcen finden Sie Anleitungen zum Erstellen effektiver Zeitreihenberichte in Power BI.
Echtzeitdashboard
Ein Echtzeitdashboard in Fabric ist eine Sammlung von Kacheln, optional in Seiten organisiert, wobei jede Kachel eine zugrunde liegende Abfrage und eine visuelle Darstellung aufweist. Sie können Kusto-Abfragesprache -Abfragen (KQL) nativ als visuelle Elemente in ein Dashboard exportieren und später ihre zugrunde liegenden Abfragen und visuelle Formatierungen nach Bedarf ändern. Diese vollständig integrierte Dashboard-Oberfläche ermöglicht eine verbesserte Abfrage- und Visualisierungsleistung und eine einfachere Datenuntersuchung.
Erstellen Sie zunächst ein neues Dashboard in Fabric Real-Time Intelligence. Mit diesem leistungsstarken Feature können Sie Daten untersuchen, visuelle Elemente anpassen, bedingte Formatierungen anwenden und Parameter verwenden. Darüber hinaus können Sie Benachrichtigungen direkt aus Ihren Echtzeit-Dashboards erstellen und Ihre Überwachungsfunktionen verbessern. Ausführliche Anweisungen zum Erstellen eines Dashboards finden Sie in der offiziellen Dokumentation.