Freigeben über


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

  1. Ü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)
  2. Übersicht über die Speicher-Konfiguration> – Speicherkonto>
  3. Verwenden des Speicher-Explorers zum Abrufen von Ordnerstatistiken
    • Größe und Anzahl der Blobs des PT=Time-Ordners.

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:

  1. Wählen Sie den entsprechenden Container aus, und geben Sie dessen URI zusammen mit dem erforderlichen SAS-Token oder Account Keyan.

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

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

  1. Laden Sie TSM von TSI UX herunter.

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

    Screenshot der TSM-Migration zum Azure-Daten-Explorer – Lösche die ersten drei Zeilen

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

    Screenshot der TSM-Migration zum Azure-Daten-Explorer – Suchen und Ersetzen

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

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.