Compartir a través de


Migración de Time Series Insights Gen2 a Real-Time Intelligence en Microsoft Fabric

Nota

El servicio Time Series Insights se retirará el 7 de julio de 2024. Considere la posibilidad de migrar entornos existentes a soluciones alternativas lo antes posible. Para obtener más información sobre la deprecación y la migración, visite nuestra documentación .

Visión general

Eventhouse es la base de datos de series temporales en Real-Time Intelligence. Sirve como destino para migrar datos fuera de Time Series Insights.

Recomendaciones de migración de alto nivel.

Característica Migración recomendada
Ingesta de JSON desde Hub con aplanamiento y escape de caracteres Obtención de datos de Azure Event Hubs
Apertura del almacén en frío Disponibilidad de Eventhouse OneLake
Conector de Power BI Usa Eventhouse Power BI Connector. Reescriba TSQ a KQL manualmente.
Conector de Spark Migre datos a Eventhouse. Utilizar un cuaderno con Apache Spark para consultar un Eventhouse o Explorar los datos en su lakehouse con un cuaderno
Carga masiva Obtención de datos de Azure Storage
Modelo de serie temporal Se puede exportar como archivo JSON. Puede importarse a Eventhouse. semántica de Kusto Graph permitir el modelo, recorrer y analizar la jerarquía del modelo de serie temporal como gráfico
Explorador de series temporales Real-Time panel de control, informe de Power BI o escribir un panel de control personalizado usando KustoTrender
Lenguaje de consulta Vuelva a escribir consultas en KQL.

Migración de datos de telemetría

Para recuperar la copia de todos los datos del entorno, use PT=Time carpeta en la cuenta de almacenamiento. Para obtener más información, consulte Data Storage.

Paso 1 de migración: Obtener estadísticas sobre los datos de telemetría

Datos

  1. Introducción a Env
    • Registrar el ID del entorno de la primera parte del FQDN de acceso a datos (por ejemplo, d390b0b0-1445-4c0c-8365-68d6382c1c2a de .env.crystal-dev.windows-int.net)
  2. Visión general de Env - Configuración de> - Cuenta de almacenamiento de>
  3. Uso del Explorador de Storage para obtener estadísticas de carpetas
    • Tamaño del registro y el número de blobs de la carpeta PT=Time.

Paso 2 de migración: Migración de datos a eventhouse

Creación de un centro de eventos

Para configurar un Eventhouse para el proceso de migración, siga los pasos en creación de un Eventhouse.

Ingesta de datos

Para recuperar datos de la cuenta de almacenamiento correspondiente a la instancia de Time Series Insights, siga los pasos descritos en obtener datos de Azure Storage.

Asegúrese de que:

  1. Seleccione el contenedor adecuado y proporcione su URI, junto con el token de SAS necesario o la clave de cuenta necesaria .

  2. Configura la ruta de la carpeta de filtros de archivos como V=1/PT=Time para filtrar los blobs relevantes.

  3. Compruebe el esquema inferido y quite las columnas consultadas con poca frecuencia, mientras conserva al menos la marca de tiempo, las columnas TSID y los valores. Para asegurarse de que todos los datos se copian en Eventhouse, agregue otra columna y use la transformación de asignación de DropMappedFields.

  4. Complete el proceso de ingesta.

Consulta de los datos

Ahora que ha ingerido correctamente los datos, puede empezar a explorarlos mediante una consulta KQL de . Si necesita acceder a los datos desde la aplicación cliente personalizada, Eventhouse proporciona SDK para lenguajes de programación principales, como C# (vínculo), Java (vínculo) y Node.js (vínculo).

Migración del modelo de serie temporal a Azure Data Explorer

El modelo se puede descargar en formato JSON desde el entorno de TSI mediante TSI Explorer UX o TSM Batch API. A continuación, el modelo se puede importar a Eventhouse.

  1. Descargue TSM desde TSI UX.

  2. Elimine las tres primeras líneas con Visual Studio Code u otro editor.

    Captura de pantalla de la migración de TSM a Azure Data Explorer: eliminación de las primeras 3 líneas

  3. Con Visual Studio Code u otro editor, busque y reemplace como regex \},\n \{ por }{

    Captura de pantalla de la migración de TSM a Azure Data Explorer: buscar y reemplazar

  4. Importar como JSON en ADX como una tabla independiente usando para obtener datos de un único archivo.

Una vez que haya migrado sus datos de serie temporal a Eventhouse en Fabric Real-Time Intelligence, puede usar el poder de la semántica de Kusto Graph para contextualizar y analizar sus datos. La semántica de Kusto Graph permite modelar, recorrer y analizar la jerarquía del modelo de serie temporal como gráfico. Mediante la semántica de Kusto Graph, puede obtener información sobre las relaciones entre diferentes entidades de los datos de serie temporal, como activos, sitios y puntos de datos. Estas conclusiones le ayudan a comprender las dependencias e interacciones entre varios componentes del sistema.

Traducción de consultas de series temporales (TSQ) a 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 con filtro

{
  "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 con variable proyectada

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

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

No hay ningún proceso automatizado para migrar informes de Power BI basados en Time Series Insights. Todas las consultas que dependen de los datos almacenados en Time Series Insights deben migrarse a Eventhouse.

Para crear informes de series temporales eficaces en Power BI, se recomienda hacer referencia a los siguientes artículos de blog informativos:

Consulte estos recursos para obtener instrucciones sobre cómo crear informes de series temporales eficaces en Power BI.

Panel de Real-Time

Un Real-Time Dashboard in Fabric es una colección de iconos, opcionalmente organizados en páginas, donde cada icono tiene una consulta subyacente y una representación visual. Puede exportar de forma nativa consultas del lenguaje de consulta kusto (KQL) a un panel como objetos visuales y modificar posteriormente sus consultas subyacentes y formato visual según sea necesario. Además de facilitar la exploración de datos, esta experiencia de panel totalmente integrada proporciona un rendimiento mejorado de la consulta y visualización.

Empiece por crear un nuevo panel en Fabric Real-Time Intelligence. Esta eficaz característica le permite explorar datos, personalizar objetos visuales, aplicar formato condicional y utilizar parámetros. Además, puede crear alertas directamente desde los paneles de Real-Time, lo que mejora las funcionalidades de supervisión. Para obtener instrucciones detalladas sobre cómo crear un panel, consulte la documentación oficial de .