Delen via


Time Series Insights Gen2 migreren naar Real-Time Intelligence in Microsoft Fabric

Notitie

De Time Series Insights-service wordt op 7 juli 2024 buiten gebruik gesteld. Overweeg om bestaande omgevingen zo snel mogelijk naar alternatieve oplossingen te migreren. Ga voor meer informatie over de depreciatie en migratie naar onze documentatie.

Overzicht

Eventhouse is de tijdreeksdatabase bij Real-Time Intelligence. Het fungeert als het doel voor het migreren van gegevens van Time Series Insights.

Aanbevelingen voor migratie op hoog niveau.

Kenmerk Migratie aanbevolen
JSON opnemen vanuit Hub met platmaken en ontsnappen Gegevens ophalen uit Azure Event Hubs
Koude opslag openen Beschikbaarheid van Eventhouse OneLake
Power BI Connector Gebruik Eventhouse Power BI Connector. Herschrijf TSQ handmatig naar KQL.
Spark connector Gegevens migreren naar Eventhouse. Een notebook met Apache Spark gebruiken om een query uit te voeren op een Eventhouse- of De gegevens in uw Lakehouse verkennen met een notebook
Bulksgewijs uploaden Gegevens ophalen uit Azure Storage
Tijdreeksmodel Kan worden geëxporteerd als JSON-bestand. Kan worden geïmporteerd in Eventhouse. Kusto Graph Semantics maken het mogelijk de hierarchie van Tijdreeksmodellen te modelleren, doorlopen en analyseren als een grafiek.
Tijdreeksen Verkenner Real-Time DashboardPower BI-rapport of schrijf een aangepast dashboard met KustoTrender
querytaal Query's herschrijven in KQL.

Het Migreren van Telemetrie

Als u de kopie van alle gegevens in de omgeving wilt ophalen, gebruikt u PT=Time map in het opslagaccount. Zie Data Storagevoor meer informatie.

Migratie stap 1: statistieken over telemetriegegevens ophalen

Gegevens

  1. Overzicht van Env
    • Noteer het Environment ID van het eerste deel van de Data Access FQDN (bijvoorbeeld d390b0b0-1445-4c0c-8365-68d6382c1c2a van .env.crystal-dev.windows-int.net)
  2. Overzicht van Env ->-opslagconfiguratie ->-opslagaccount
  3. Storage Explorer gebruiken om mapstatistieken op te halen
    • Recordgrootte en het aantal blobs van PT=Time map.

Migratie stap 2: gegevens migreren naar Eventhouse

Een Eventhouse maken

Als u een Eventhouse voor uw migratieproces wilt instellen, volgt u de stappen in het maken van een Eventhouse.

Gegevensopname

Als u gegevens wilt ophalen voor het opslagaccount dat overeenkomt met uw Time Series Insights-exemplaar, volgt u de stappen in het ophalen van gegevens uit Azure Storage.

Zorg ervoor dat u het volgende doet:

  1. Selecteer de juiste container en geef de bijbehorende URI op, samen met de benodigde SAS-token of accountsleutel.

  2. Configureer het pad naar de map met bestandsfilters als V=1/PT=Time om de relevante blobs te filteren.

  3. Controleer het uitgestelde schema en verwijder onregelmatig opgevraagde kolommen, terwijl u ten minste de tijdstempel, TSID-kolommen en -waarden behoudt. Om ervoor te zorgen dat al uw gegevens naar Eventhouse worden gekopieerd, voegt u nog een kolom toe en gebruikt u de DropMappedFields toewijzingstransformatie.

  4. Voltooi het opnameproces.

Query's uitvoeren op de gegevens

Nu u de gegevens hebt opgenomen, kunt u deze verkennen met behulp van een KQL-queryset. Als u toegang nodig hebt tot de gegevens van uw aangepaste clienttoepassing, biedt Eventhouse SDK's voor belangrijke programmeertalen zoals C# (koppeling), Java (koppeling) en Node.js (koppeling).

Time Series-model migreren naar Azure Data Explorer

Het model kan worden gedownload in JSON-indeling vanuit TSI Environment met behulp van TSI Explorer UX of TSM Batch API. Vervolgens kan het model worden geïmporteerd in Eventhouse.

  1. Download TSM van TSI UX.

  2. Verwijder de eerste drie regels met Visual Studio Code of een andere editor.

    Schermopname van TSM-migratie naar Azure Data Explorer - Eerste drie regels verwijderen

  3. Gebruik Visual Studio Code of een andere editor om met regex \},\n \{ te zoeken en te vervangen door }{.

    Schermopname van TSM-migratie naar Azure Data Explorer : zoeken en vervangen

  4. Opnemen als JSON in ADX als een afzonderlijke tabel met behulp van Gegevens ophalen uit één bestand.

Zodra u uw tijdreeksgegevens hebt gemigreerd naar Eventhouse in Fabric Real-Time Intelligence, kunt u de kracht van Kusto Graph-semantiek gebruiken om uw gegevens te contextualiseren en analyseren. Met Kusto Graph Semantics kunt u de hiërarchie van uw Time Series-model als grafiek modelleren, doorlopen en analyseren. Met behulp van Kusto Graph-semantiek kunt u inzicht krijgen in de relaties tussen verschillende entiteiten in uw tijdreeksgegevens, zoals assets, sites en gegevenspunten. Deze inzichten helpen u inzicht te krijgen in de afhankelijkheden en interacties tussen verschillende onderdelen van uw systeem.

Time Series Queries (TSQ) vertalen naar KQL

Evenementen Ophalen

{
  "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 met filteroptie

{
  "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 met projected 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']

GeaggregeerdeReeks

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

Er is geen geautomatiseerd proces voor het migreren van Power BI-rapporten die zijn gebaseerd op Time Series Insights. Alle query's die afhankelijk zijn van gegevens die zijn opgeslagen in Time Series Insights, moeten worden gemigreerd naar Eventhouse-.

Als u efficiënte tijdreeksrapporten in Power BI wilt maken, raden we u aan om te verwijzen naar de volgende informatieve blogartikelen:

Raadpleeg deze resources voor hulp bij het maken van effectieve tijdreeksrapporten in Power BI.

Real-Time Overzicht

Een Real-Time Dashboard in Fabric is een verzameling tegels, optioneel ingedeeld op pagina's, waarbij elke tegel een onderliggende query en een visuele weergave heeft. U kunt KQL-query's (Kusto Query Language) standaard exporteren naar een dashboard als visuals en de onderliggende query's en visuele opmaak later zo nodig wijzigen. Naast het gemak van gegevensverkenning biedt deze volledig geïntegreerde dashboardervaring verbeterde prestaties van query's en visualisaties.

Begin met het maken van een nieuw dashboard in Fabric Real-Time Intelligence. Met deze krachtige functie kunt u gegevens verkennen, visuals aanpassen, voorwaardelijke opmaak toepassen en parameters gebruiken. Bovendien kunt u waarschuwingen rechtstreeks vanuit uw Real-Time Dashboards maken, waardoor uw bewakingsmogelijkheden worden verbeterd. Raadpleeg de officiële documentatievoor gedetailleerde instructies over het maken van een dashboard.