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
- 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)
- Visión general de Env - Configuración de> - Cuenta de almacenamiento de>
- 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
.
- Tamaño del registro y el número de blobs de la carpeta
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:
Seleccione el contenedor adecuado y proporcione su URI, junto con el token de SAS necesario o la clave de cuenta necesaria .
Configura la ruta de la carpeta de filtros de archivos como
V=1/PT=Time
para filtrar los blobs relevantes.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.
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.
Descargue TSM desde TSI UX.
Elimine las tres primeras líneas con Visual Studio Code u otro editor.
Con Visual Studio Code u otro editor, busque y reemplace como regex
\},\n \{
por}{
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:
- Capacidades de series temporales de Eventhouse en Power BI
- Cómo usar parámetros dinámicos M sin más limitaciones
- Valores de intervalo de tiempo/duración en KQL, Power Query y Power BI
- configuración de consulta de KQL en Power BI
- Filtrado y visualización de datos de Kusto en la hora local
- informes casi en tiempo real en PBI + Kusto
- modelado de Power BI con ADX: de hoja de referencia rápida
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 .