Partilhar via


Migrando o Time Series Insights Gen2 para o Real-Time Intelligence no Microsoft Fabric

Observação

O serviço Time Series Insights será desativado em 7 de julho de 2024. Considere migrar os ambientes existentes para soluções alternativas o mais rápido possível. Para obter mais informações sobre a substituição e a migração, visite nossode documentação .

Visão geral

Eventhouse é a base de dados de séries temporais da Real-Time Intelligence. Ele serve como destino para migrar dados do Time Series Insights.

Recomendações de migração de alto nível.

Funcionalidade Migração recomendada
Ingerir JSON do Hub com achatamento e escape Obter dados dos Hubs de Eventos do Azure
Abrir câmara frigorífica Disponibilidade do Eventhouse OneLake
Conector do Power BI Utilize o Eventhouse Power BI Connector. Reescreva o TSQ em KQL manualmente.
Conector de faísca Migre dados para o Eventhouse. Utilize um notebook com Apache Spark para consultar um evento na Eventhouse ou explore os dados no seu lakehouse com um notebook
Carregamento em massa Obter dados de armazenamento do Azure
Modelo de Série Temporal Pode ser exportado como arquivo JSON. Pode ser importado para Eventhouse. Kusto Graph Semantics permitem modelar, percorrer e analisar a hierarquia do Modelo de Série Temporal como um gráfico
Explorador de Séries Temporais Real-Time Painel de controlo, relatório do Power BI ou escreva um painel de controlo personalizado usando KustoTrender
Linguagem de consulta Reescreva consultas no KQL.

Migração de Telemetria

Para recuperar a cópia de todos os dados no ambiente, use a pasta PT=Time na conta de armazenamento. Para obter mais informações, consulte Data Storage.

Etapa de migração 1 – Obter estatísticas sobre dados de telemetria

Dados

  1. Visão geral do Env
    • Registar ID de Ambiente a partir da primeira parte do FQDN de Acesso a Dados (por exemplo, d390b0b0-1445-4c0c-8365-68d6382c1c2a extraído de .env.crystal-dev.windows-int.net)
  2. Visão geral do Env - Configuração de armazenamento> - Conta de armazenamento>
  3. Use o Gerenciador de Armazenamento para obter estatísticas de pastas
    • Tamanho do registo e o número de blobs da pasta PT=Time.

Etapa de migração 2 – Migrar dados para o Eventhouse

Criar uma casa de eventos

Para configurar um Eventhouse para seu processo de migração, siga as etapas em criar um Eventhouse.

Ingestão de dados

Para recuperar dados para a conta de armazenamento correspondente à sua instância do Time Series Insights, siga as etapas em obtendo dados do Armazenamento do Azure.

Certifique-se de que:

  1. Selecione o contentor apropriado e forneça o seu URI, juntamente com o de token SAS necessário ou a chave de conta .

  2. Configure o caminho da pasta de filtros de arquivo como V=1/PT=Time para filtrar os blobs relevantes.

  3. Verifique o esquema inferido e remova todas as colunas consultadas com pouca frequência, mantendo pelo menos o carimbo de data/hora, as colunas TSID e os valores. Para garantir que todos os seus dados sejam copiados para o Eventhouse, adicione outra coluna e use o DropMappedFields transformação de mapeamento.

  4. Conclua o processo de ingestão.

Consultando os dados

Agora que você ingeriu os dados com sucesso, pode começar a explorá-los usando um conjunto de consultas KQL . Se você precisar acessar os dados de seu aplicativo cliente personalizado, o Eventhouse fornece SDKs para as principais linguagens de programação, como C# (link), Java (link) e Node.js (link).

Migrando o modelo de série temporal para o Azure Data Explorer

O modelo pode ser baixado em formato JSON do Ambiente TSI usando o TSI Explorer UX ou TSM Batch API. Em seguida, o modelo pode ser importado para a Eventhouse.

  1. Descarregue o TSM da TSI UX.

  2. Exclua as três primeiras linhas usando o Visual Studio Code ou outro editor.

    Captura de ecrã da migração do TSM para o Azure Data Explorer - Eliminar as primeiras 3 linhas

  3. Usando o Visual Studio Code ou outro editor, pesquise e substitua como regex \},\n \{ por }{

    Captura de tela da migração do TSM para o Azure Data Explorer - pesquise e substitua

  4. Ingerir como JSON no ADX como uma tabela separada usando Obter dados de um único arquivo.

Depois de migrar seus dados de séries temporais para o Eventhouse no Fabric Real-Time Intelligence, você pode usar o poder do Kusto Graph Semantics para contextualizar e analisar seus dados. Kusto Graph Semantics permite modelar, percorrer e analisar a hierarquia do seu Modelo de Série Temporal como um gráfico. Usando a Semântica do Kusto Graph, você pode obter informações sobre as relações entre diferentes entidades em seus dados de séries temporais, como ativos, sites e pontos de dados. Esses insights ajudam você a entender as dependências e interações entre vários componentes do seu sistema.

Traduzir Consultas de Série Temporal (TSQ) para 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 com 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 com variável projetada

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

Série Agregada

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

Não há nenhum processo automatizado para migrar relatórios do Power BI baseados em Insights de Série Temporal. Todas as consultas que dependem de dados armazenados no Time Series Insights devem ser migradas para Eventhouse.

Para criar relatórios de séries cronológicas eficientes no Power BI, recomendamos consultar os seguintes artigos informativos do blog:

Consulte estes recursos para obter orientações sobre como criar relatórios de séries cronológicas eficazes no Power BI.

Painel Real-Time

Um Real-Time Dashboard no Fabric é uma coleção de blocos, opcionalmente organizados em páginas, onde cada bloco tem uma consulta subjacente e uma representação visual. Você pode exportar nativamente consultas KQL (Kusto Query Language) para um painel como elementos visuais e, posteriormente, modificar suas consultas subjacentes e formatação visual, conforme necessário. Além da facilidade de exploração de dados, essa experiência de painel totalmente integrada oferece melhor desempenho de consulta e visualização.

Comece criando um novo painel no Fabric Real-Time Intelligence. Este poderoso recurso permite explorar dados, personalizar elementos visuais, aplicar formatação condicional e utilizar parâmetros. Além disso, pode criar alertas diretamente a partir dos seus Real-Time Dashboards, melhorando as suas capacidades de monitorização. Para obter instruções detalhadas sobre como criar um painel, consulte a documentação oficial .