Migrando o Time Series Insights Gen2 para Real-Time Intelligence no Microsoft Fabric
Nota
O serviço Time Series Insights será desativado em 7 de julho de 2024. Considere migrar 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 nossa documentação .
Visão geral
Eventhouse é o banco de dados de série temporal no Real-Time Intelligence. Ele serve como destino para migrar dados para longe do Time Series Insights.
Recomendações de migração de alto nível.
Característica | Migração recomendada |
---|---|
Ingestão de JSON do Hub com nivelamento e escape | Obter dados dos Hubs de Eventos do Azure |
Abrir a loja frigorífica | Disponibilidade do Eventhouse OneLake |
Conector do Power BI | Use o Conector de Power BI do Eventhouse . Reescreva o TSQ para o KQL manualmente. |
Conector do Spark | Migrar dados para o Eventhouse. usar um bloco de anotações com Apache Spark para consultar um do Eventhouse ou Explorar os dados em seu lakehouse com um bloco de anotações |
Carregamento em massa | Obter dados do armazenamento do Azure |
Modelo de Série Temporal | Pode ser exportado como arquivo JSON. Pode ser importado para o Eventhouse. Semântica do Grafo do Kusto permite modelar, percorrer e analisar a hierarquia do Modelo de Série Temporal como um grafo |
Gerenciador de Séries Temporais | Real-Time Dashboard, relatório do Power BI ou criar um painel personalizado usando o KustoTrender |
Linguagem de consulta | Reescrever consultas em KQL. |
Migrando telemetria
Para recuperar a cópia de todos os dados no ambiente, use a pasta PT=Time
da conta de armazenamento. Para obter mais informações, consulte Data Storage.
Etapa de Migração 1 – Obter estatísticas sobre dados telemétricos
Dados
- Visão geral do ambiente
- Registre o ID do Ambiente a partir da primeira parte do FQDN de Acesso a Dados (por exemplo, d390b0b0-1445-4c0c-8365-68d6382c1c2a de .env.crystal-dev.windows-int.net)
- Visão geral do ambiente -> Configuração de Armazenamento -> Conta de Armazenamento
- Usar o Gerenciador de Armazenamento para obter estatísticas de pasta
- Tamanho do registro e o número de blobs da pasta
PT=Time
.
- Tamanho do registro e o número de blobs da pasta
Etapa de migração 2 – Migrar dados para o Eventhouse
Criar um Eventhouse
Para configurar um Eventhouse para o processo de migração, siga as etapas em Criar um Eventhouse.
Ingestão de dados
Para recuperar dados da conta de armazenamento correspondente à instância do Time Series Insights, siga as etapas em obtendo dados do Armazenamento do Azure.
Verifique se você:
Selecione o contêiner apropriado e forneça seu URI, juntamente com o necessário token SAS ou a chave de conta .
Configure o caminho da pasta de filtros de arquivo como
V=1/PT=Time
para filtrar os blobs relevantes.Verifique o esquema inferido e remova colunas consultadas com pouca frequência, mantendo pelo menos o carimbo de data/hora, colunas TSID e valores. Para garantir que todos os dados sejam copiados para o Eventhouse, adicione outra coluna e use a transformação de mapeamento DropMappedFields.
Conclua o processo de ingestão.
Consultando os dados
Agora que você ingeriu os dados com êxito, pode começar a explorá-los usando um conjunto de consulta KQL . Se você precisar acessar os dados de seu aplicativo cliente personalizado, o Eventhouse fornecerá 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 no formato JSON do Ambiente TSI usando o TSI Explorer UX ou a API de Processamento em Lote do TSM. Em seguida, o modelo pode ser importado para o Eventhouse.
Baixe o TSM do TSI UX.
Exclua as três primeiras linhas usando o Visual Studio Code ou outro editor.
Usando o Visual Studio Code ou outro editor, pesquise e substitua
\},\n \{
por}{
utilizando regex.Ingerir no ADX como JSON em uma tabela separada usando Obter dados de um único arquivo.
Depois de migrar seus dados de série temporal para o Eventhouse no Fabric Real-Time Intelligence, você pode usar o poder de semântica do Grafo do Kusto para contextualizar e analisar seus dados. A Semântica do Grafo do Kusto permite que você modele, percorra e analise a hierarquia do modelo de série temporal como um grafo. Usando a Semântica do Grafo do Kusto, você pode obter insights sobre as relações entre diferentes entidades em seus dados de série temporal, 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
ObterEventos
{
"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']
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 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 no Time Series Insights. Todas as consultas que dependem de dados armazenados no Time Series Insights devem ser migradas para eventhouse.
Para criar relatórios eficientes de série temporal no Power BI, recomendamos fazer referência aos seguintes artigos informativos do blog:
- Capacidades de série temporal do Eventhouse no Power BI
- Como usar parâmetros dinâmicos M sem a maioria das limitações
- valores de intervalo de tempo/duração em KQL, Power Query e Power BI
- configurações de consulta KQL no Power BI
- filtrando e visualizando os dados do Kusto no horário local
- Relatórios quase em tempo real no PBI + Kusto
- Modelagem no Power BI usando ADX - guia rápido
Consulte esses recursos para obter diretrizes sobre como criar relatórios de série temporal eficazes no Power BI.
Painel do Real-Time
Um Real-Time Dashboard no Fabric é uma coleção de blocos que podem ser organizados em páginas, onde cada bloco possui uma consulta subjacente e uma representação visual. Você pode exportar nativamente consultas KQL (Kusto Query Language) para um dashboard como 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 fornece melhor desempenho de consulta e visualização.
Comece criando um novo painel no Fabric Real-Time Intelligence. Esse recurso poderoso permite explorar dados, personalizar visuais, aplicar formatação condicional e utilizar parâmetros. Além disso, você pode criar alertas diretamente de seus painéis de Real-Time, aprimorando seus recursos de monitoramento. Para obter instruções detalhadas sobre como criar um painel, consulte a documentação oficial .