Partager via


Migration de Time Series Insights Gen2 vers Real-Time Intelligence dans Microsoft Fabric

Remarque

Le service Time Series Insights va être mis hors service le 7 juillet 2024. Prévoyez de migrer les environnements existants vers des solutions alternatives dès que possible. Pour plus d’informations sur la dépréciation et la migration, consultez notre documentation.

Vue d’ensemble

Eventhouse est la base de données de série chronologique dans Real-Time Intelligence. Elle sert de cible pour migrer les données de Time Series Insights.

Recommandations de migration générales.

Fonctionnalité Migration recommandée
Ingestion de JSON à partir d’un hub avec aplanissement et échappement Obtenir des données à partir d’Azure Event Hubs
Ouvrir un magasin froid Disponibilité de OneLake dans un Eventhouse
Connecteur Power BI Utilisez le connecteur Power BI pour un Eventhouse. Réécrire TSQ sur KQL manuellement.
Spark Connector Migrez des données vers un Eventhouse. Utiliser un notebook avec Apache Spark pour interroger un Eventhouse ou Explorer les données de votre lakehouse avec un notebook
Chargement en bloc Obtenir des données du stockage Azure
Modèle de série chronologique Peut être exporté en tant que fichier JSON. Peut être importé dans l’Eventhouse. La sémantique de graphe Kusto permet de modeler, de parcourir et d’analyser la hiérarchie de modèles de série chronologique sous forme de graphe
Explorateur de séries chronologiques Tableau de bord en temps réel, rapport Power BI ou écrire un tableau de bord personnalisé avec KustoTrender
Langage de requête Réécrire des requêtes dans KQL.

Migration de télémétrie

Pour récupérer la copie de toutes les données dans l’environnement, utilisez le dossier PT=Time dans le compte de stockage. Pour plus d’informations, consultez Stockage de données.

Étape de migration 1 – Obtenir des statistiques sur les données de télémétrie

Données

  1. Vue d’ensemble d’environnement
    • Enregistrer l’ID d’environnement de la première partie du nom de domaine complet (FQDN) d’accès aux données (par exemple, d390b0b0-1445-4c0c-8365-68d6382c1c2a à partir de .env.crystal-dev.windows-int.net)
  2. Vue d’ensemble d’environnement -> Configuration du stockage -> Compte de stockage
  3. Utiliser l’Explorateur Stockage pour récupérer les statistiques de dossiers
    • Enregistrer la taille et nombre de blobs du dossier PT=Time.

Étape de migration 2 – Migrer des données vers un Eventhouse

Créer un Eventhouse

Pour configurer un Eventhouse dans le cadre de votre processus de migration, suivez les étapes dans Création d’un Eventhouse.

Ingestion de données

Pour récupérer des données pour le compte de stockage correspondant à votre instance Time Series Insights, suivez les étapes dans Obtention de données à partir du Stockage Azure.

Veillez à :

  1. Sélectionnez le conteneur approprié et fournissez son URI, ainsi que le jeton SAS ou la clé de compte nécessaire.

  2. Configurez le chemin du dossier des filtres de fichier en tant que V=1/PT=Time pour filtrer les blobs appropriés.

  3. Vérifiez le schéma déduit et supprimez toutes les colonnes rarement interrogées en conservant au moins l’horodatage, les colonnes TSID et les valeurs. Pour vous assurer que toutes vos données sont copiées dans l’Eventhouse, ajoutez une autre colonne et utilisez la transformation de mappage DropMappedFields.

  4. Effectuez le processus d’ingestion.

Interrogation des données

Maintenant que vous avez correctement ingéré les données, vous pouvez commencer à les explorer à l’aide d’un ensemble de requêtes KQL. Si vous devez accéder aux données de votre application cliente personnalisée, l’Eventhouse fournit des kits SDK pour les principaux langages de programmation tels que C# (lien), Java (lien) et Node.js (lien).

Migration du modèle Time Series vers Azure Data Explorer

Le modèle peut être téléchargé au format JSON à partir de l’environnement TSI à l’aide de l’interface utilisateur de l’Explorateur TSI ou de l’API Batch TSM. Ensuite, le modèle peut être importé dans l’Eventhouse.

  1. Télécharger TSM à partir de l’interface utilisateur de TSI.

  2. Supprimez les trois premières lignes en utilisant Visual Studio Code ou un autre éditeur.

    Capture d’écran de la migration TSM vers Azure Data Explorer - Supprimer les 3 premières lignes

  3. À l’aide de Visual Studio Code ou d’un autre éditeur, recherchez et remplacez l’expression régulière \},\n \{ par }{

    Capture d’écran de la migration TSM vers Azure Data Explorer - Rechercher et remplacer

  4. Ingérez au format JSON dans ADX en tant que table distincte en utilisant Obtenir les données d’un seul fichier.

Une fois que vous avez migré vos données de série chronologique vers l’Eventhouse dans Real-Time Intelligence dans Fabric, vous pouvez utiliser la puissance de la sémantique de graphe Kusto pour contextualiser et analyser vos données. La sémantique de graphe Kusto vous permet de modeler, de parcourir et d’analyser la hiérarchie de votre modèle de série chronologique sous forme de graphe. En utilisant la sémantique de graphe Kusto, vous pouvez obtenir des insights sur les relations entre les différentes entités de vos données de série chronologique, telles que les ressources, les sites et les points de données. Ces insights vous aident à comprendre les dépendances et les interactions entre les divers composants de votre système.

Traduire les requêtes de séries chronologiques (TSQ) en 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 avec filtre

{
  "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 avec variable projetée

{
  "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 avec filtre

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

Il n’existe aucun processus automatisé pour la migration de rapports Power BI basés sur Time Series Insights. Toutes les requêtes qui s’appuient sur les données stockées dans Time Series Insights doivent être migrées vers l’Eventhouse.

Pour créer des rapports de série chronologique efficaces dans Power BI, nous vous recommandons de vous référer aux articles de blog instructifs suivants :

Reportez-vous à ces ressources pour obtenir des conseils sur la création de rapports de série chronologique efficaces dans Power BI.

Tableau de bord en temps réel

Un tableau de bord en temps réel dans Fabric est une collection de vignettes, éventuellement organisées dans des pages, où chaque vignette a une requête sous-jacente et une représentation visuelle. Vous pouvez exporter en mode natif des requêtes Langage de requête Kusto (KQL) vers un tableau de bord en tant que visuels et modifier ultérieurement leurs requêtes sous-jacentes et la mise en forme visuelle en fonction des besoins. En plus de faciliter l’exploration de ces données, cette expérience de tableau de bord entièrement intégrée offre des performances de requête et de visualisation améliorées.

Commencez par créer un tableau de bord dans Real-Time Intelligence dans Fabric. Cette fonctionnalité puissante vous permet d’explorer les données, de personnaliser des visuels, d’appliquer une mise en forme conditionnelle et d’utiliser des paramètres. De plus, vous pouvez créer des alertes directement de vos tableaux de bord en temps réel, ce qui améliore vos fonctionnalités de surveillance. Pour obtenir des instructions détaillées sur la création d’un tableau de bord, reportez-vous à la documentation officielle.