Freigeben über


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

  1. Ü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)
  2. Übersicht über die Umgebung -> Speicherkonfiguration -> Speicherkonto
  3. Verwenden von Storage-Explorer zum Abrufen von Ordnerstatistiken
    • Aufzeichnen von Größe und Anzahl der Blobs im Ordner PT=Time

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:

  1. Wählen Sie den entsprechenden Container aus und stellen Sie dessen URI zusammen mit dem erforderlichen SAS-Token oder Kontoschlüssel bereit.

  2. Konfigurieren Sie den Ordnerpfad für Dateifilter als V=1/PT=Time, um die relevanten Blobs zu filtern.

  3. Ü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.

  4. 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.

  1. Laden Sie TSM von der TSI-Benutzeroberfläche herunter.

  2. Löschen Sie die ersten drei Zeilen mit Visual Studio Code oder einem anderen Editor.

    Screenshot der TSM-Migration zu Azure Data Explorer: Erste 3 Zeilen löschen

  3. Suchen und ersetzen Sie mithilfe von Visual Studio Code oder einem anderen Editor als RegEx \},\n \{ durch }{

    Screenshot der TSM-Migration zu Azure Data Explorer: Suchen und ersetzen

  4. 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:

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.