Dela via


Migrera Time Series Insights Gen2 till realtidsinformation i Microsoft Fabric

Kommentar

Time Series Insights-tjänsten dras tillbaka den 7 juli 2024. Överväg att migrera befintliga miljöer till alternativa lösningar så snart som möjligt. Mer information om utfasning och migrering finns i vår dokumentation.

Översikt

Eventhouse är tidsseriedatabasen i Realtidsinformation. Den fungerar som mål för migrering av data från Time Series Insights.

Migreringsrekommendationer på hög nivå.

Funktion Migrering rekommenderas
Mata in JSON från hubben med platta ut och fly Hämta data från Azure Event Hubs
Öppna kall butik Tillgänglighet för Eventhouse OneLake
Power BI-anslutningsprogram Använd Eventhouse Power BI Connector. Skriv om TSQ till KQL manuellt.
Spark-anslutningsprogram Migrera data till Eventhouse. Använda en notebook-fil med Apache Spark för att fråga en Eventhouse eller Utforska data i ditt lakehouse med en notebook-fil
Massuppladdning Hämta data från Azure Storage
Time Series-modell Kan exporteras som JSON-fil. Kan importeras till Eventhouse. Kusto Graph-semantik tillåter modell, bläddrering och analys av tidsseriemodellhierarki som ett diagram
Time Series Explorer Realtidsinstrumentpanel, Power BI-rapport eller skriva en anpassad instrumentpanel med KustoTrender
Frågespråk Skriv om frågor i KQL.

Migrera telemetri

Om du vill hämta kopian av alla data i miljön använder du PT=Time mappen i lagringskontot. Mer information finns i Datalagring.

Migrering steg 1 – Hämta statistik om telemetridata

Data

  1. Översikt över Env
    • Registrera miljö-ID från första delen av FQDN för dataåtkomst (till exempel d390b0b0-1445-4c0c-8365-68d6382c1c2a från .env.crystal-dev.windows-int.net)
  2. Översikt över Env –> Lagringskonfiguration –> Lagringskonto
  3. Använda Storage Explorer för att hämta mappstatistik
    • Poststorlek och antalet blobar i PT=Time mappen.

Migrering steg 2 – Migrera data till Eventhouse

Skapa ett eventhouse

Om du vill konfigurera ett Eventhouse för migreringsprocessen följer du stegen för att skapa ett Eventhouse.

Datainhämtning

Om du vill hämta data för lagringskontot som motsvarar din Time Series Insights-instans följer du stegen för att hämta data från Azure Storage.

Kontrollera att du:

  1. Välj lämplig container och ange dess URI, tillsammans med nödvändig SAS-token eller kontonyckel.

  2. Konfigurera mappsökvägen för filfilter för V=1/PT=Time att filtrera relevanta blobar.

  3. Verifiera det härledda schemat och ta bort kolumner som efterfrågas sällan, samtidigt som du behåller tidsstämpeln, TSID-kolumnerna och värdena. För att säkerställa att alla dina data kopieras till Eventhouse lägger du till en annan kolumn och använder mappningstransformeringen DropMappedFields .

  4. Slutför inmatningsprocessen.

Köra frågor mot data

Nu när du har matat in data kan du börja utforska dem med hjälp av en KQL-frågeuppsättning. Om du behöver komma åt data från ditt anpassade klientprogram tillhandahåller Eventhouse SDK:er för större programmeringsspråk som C# (länk), Java (länk) och Node.js (länk).

Migrera Tidsseriemodell till Azure Data Explorer

Modellen kan laddas ned i JSON-format från TSI-miljön med TSI Explorer UX eller TSM Batch API. Sedan kan modellen importeras till Eventhouse.

  1. Ladda ned TSM från TSI UX.

  2. Ta bort de tre första raderna med Visual Studio Code eller en annan redigerare.

    Skärmbild av TSM-migrering till Azure Data Explorer – Ta bort de tre första raderna

  3. Använd Visual Studio Code eller någon annan redigerare, sök och ersätt som regex \},\n \{ med }{

    Skärmbild av TSM-migrering till Azure Data Explorer – sök och ersätt

  4. Mata in som JSON i ADX som en separat tabell med hämta data från en enda fil.

När du har migrerat dina tidsseriedata till Eventhouse i Fabric Realtidsinformation kan du använda kraften i Kusto Graph Semantics för att kontextualisera och analysera dina data. Med Kusto Graph-semantik kan du modellera, bläddra och analysera hierarkin för din Tidsseriemodell som en graf. Genom att använda Kusto Graph Semantics kan du få insikter om relationerna mellan olika entiteter i dina tidsseriedata, till exempel tillgångar, webbplatser och datapunkter. Dessa insikter hjälper dig att förstå beroenden och interaktioner mellan olika komponenter i systemet.

Översätta time series-frågor (TSQ) till 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 med 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 med beräknad variabel

{
  "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 med 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

Det finns ingen automatiserad process för att migrera Power BI-rapporter som baserades på Time Series Insights. Alla frågor som förlitar sig på data som lagras i Time Series Insights måste migreras till Eventhouse.

För att skapa effektiva tidsserierapporter i Power BI rekommenderar vi att du refererar till följande informativa bloggartiklar:

Mer information om hur du skapar effektiva tidsserierapporter i Power BI finns i dessa resurser.

Instrumentpanel i realtid

En realtidsinstrumentpanel i Infrastrukturresurser är en samling paneler, som kan ordnas på sidor, där varje panel har en underliggande fråga och en visuell representation. Du kan exportera KQL-frågor (Kusto Query Language) till en instrumentpanel som visuella objekt och senare ändra deras underliggande frågor och visuell formatering efter behov. Förutom enkel datautforskning ger den här fullständigt integrerade instrumentpanelen bättre prestanda för frågor och visualisering.

Börja med att skapa en ny instrumentpanel i Fabric Realtidsinformation. Med den här kraftfulla funktionen kan du utforska data, anpassa visuella objekt, tillämpa villkorsstyrd formatering och använda parametrar. Dessutom kan du skapa aviseringar direkt från dina realtidsinstrumentpaneler och förbättra dina övervakningsfunktioner. Detaljerade anvisningar om hur du skapar en instrumentpanel finns i den officiella dokumentationen.