Migration von Time Series Insights Gen2 zu Real-Time Intelligence in Microsoft Fabric
Anmerkung
Der Time Series Insights-Dienst wird am 7. Juli 2024 eingestellt. Erwägen Sie, vorhandene Umgebungen so schnell wie möglich zu alternativen Lösungen zu migrieren. Weitere Informationen zur Veralterung und zur Migration finden Sie in unserer dokumentation.
Überblick
Eventhouse ist die Zeitreihendatenbank in Real-Time Intelligence. Es wird als Ziel für die Migration von Daten aus Time Series Insights verwendet.
Empfehlungen auf hoher Ebene für die Migration.
Merkmal | Migration empfohlen |
---|---|
Aufnahme von JSON aus dem Hub mit Flattening und Escaping | Abrufen von Daten aus Azure Event Hubs |
Öffnen Kühlhaus | Eventhouse OneLake - Verfügbarkeit |
Power BI Connector | Verwenden Sie Eventhouse Power BI Connector. Schreiben Sie TSQ manuell in KQL um. |
Spark Connector | Migrieren von Daten zu Eventhouse. Verwenden Sie ein Notizbuch mit Apache Spark, um ein Eventhouse abzufragen oder Erkunden Sie die Daten in Ihrem Lakehouse mit einem Notizbuch |
Massenupload | Abrufen von Daten aus Azure Storage |
Zeitreihenmodell | Kann als JSON-Datei exportiert werden. Kann in Eventhouse importiert werden. Kusto Graph-Semantik ermöglicht das Modellieren, Durchlaufen und Analysieren der Zeitreihenmodellhierarchie als Graph. |
Zeitreihen-Explorer | Real-Time Dashboard-, Power BI-Bericht oder schreiben Sie ein benutzerdefiniertes Dashboard mit KustoTrender- |
Abfragesprache | Schreiben Sie Abfragen in KQL neu. |
Migrieren von Telemetrie
Um die Kopie aller Daten in der Umgebung abzurufen, verwenden Sie den PT=Time
-Ordner im Speicher-Konto. Weitere Informationen finden Sie unter Datenspeicher.
Migrationsschritt 1 – Abrufen von Statistiken zu Telemetriedaten
Daten
- Übersicht über Env
- Protokollieren Sie die Environment-ID aus dem ersten Teil des Data Access FQDN (zum Beispiel, d390b0b0-1445-4c0c-8365-68d6382c1c2a aus .env.crystal-dev.windows-int.net)
- Übersicht über die Speicher-Konfiguration> – Speicherkonto>
- Verwenden des Speicher-Explorers zum Abrufen von Ordnerstatistiken
- Größe und Anzahl der Blobs des
PT=Time
-Ordners.
- Größe und Anzahl der Blobs des
Migrationsschritt 2 – Migrieren von Daten zu Eventhouse
Eventhouse erstellen
Um ein Eventhouse für Ihren Migrationsprozess einzurichten, folgen Sie den Schritten im Abschnitt Erstellen eines Eventhouse.
Datenaufnahme
Um Daten für das Speicherkonto abzurufen, das Ihrer Time Series Insights-Instanz entspricht, führen Sie die Schritte in Abrufen von Daten aus Azure Storageaus.
Stellen Sie sicher, dass Sie:
Wählen Sie den entsprechenden Container aus, und geben Sie dessen URI zusammen mit dem erforderlichen SAS-Token oder Account Keyan.
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 die 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, die Daten mithilfe eines KQL-Abfragesetszu 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 Zeitreihenmodells zu Azure Data Explorer
Das Modell kann im JSON-Format von TSI Environment mit TSI Explorer UX oder TSM Batch-API heruntergeladen werden. Anschließend kann das Modell in Eventhouse importiert werden.
Laden Sie TSM von TSI UX 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 mit Regex
\},\n \{
durch}{
JSON in ADX als separate Tabelle unter Verwendung von Daten aus einer einzelnen Dateiabrufen.
Nachdem Sie Ihre Zeitreihendaten nach Eventhouse in Fabric Real-Time Intelligence migriert haben, können Sie mit Kusto Graph Semantics Ihre Daten kontextualisieren und analysieren. 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 (TIME Series Queries, 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 Eventhousemigriert werden.
Um effiziente Zeitreihenberichte in Power BI zu erstellen, empfehlen wir, auf die folgenden informativen Blogartikel zu verweisen:
- Funktionen der Eventhouse-Zeitreihe 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.
Real-Time Dashboard
Ein Real-Time Dashboard in Fabric ist eine Sammlung von Kacheln, die optional auch in Seiten organisiert sind, bei der jede Kachel eine zugrunde liegende Abfrage und eine visuelle Darstellung aufweist. Sie können Kusto Query Language (KQL)-Abfragen nativ als visuelle Elemente in ein Dashboard exportieren und später die zugrunde liegenden Abfragen und visuelle Formatierungen nach Bedarf ändern. Zusätzlich zur einfachen Datensuche bietet diese vollständig integrierte Dashboardoberfläche eine verbesserte Abfrage- und Visualisierungsleistung.
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 Real-Time Dashboards erstellen und Ihre Überwachungsfunktionen verbessern. Ausführliche Anweisungen zum Erstellen eines Dashboards finden Sie in der offiziellen Dokumentation.