Como migrar o Time Series Insights Gen1 para a Inteligência de Dados em Tempo Real no Microsoft Fabric

Observação

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

O Eventhouse é o banco de dados de série temporal da Inteligência em Tempo Real. Ele serve como destino da migração de dados fora do Time Series Insights.

Pré-requisitos

Ingerir novos dados

Use as seguintes etapas para começar a ingerir novos dados no Eventhouse:

  1. Configure o hub de eventos com um novo grupo de consumidores.

  2. Consuma dados da fonte de dados e ingira-os no Eventhouse. Veja a documentação sobre como ingerir dados por meio do hub de eventos.

Migrar dados históricos do Time Series Insights

Caso você precise exportar dados do ambiente do Time Series Insights, use a API de Consulta do Time Series Insights para baixar os eventos em lotes e serializá-los no formato necessário. Dependendo de onde armazenou os dados exportados, você pode ingerir os dados do Armazenamento do Azure, dos arquivos locais ou do OneLake.

Migrar dados de referência

Use as seguintes etapas para migrar os dados de referência:

  1. Use o Gerenciador do Time Series Insights ou a API de Dados de Referência para baixar o conjunto de dados de referência.

  2. Depois de obter o conjunto de dados de referência, carregue-o no Eventhouse como outra tabela. Ao carregar o conjunto de dados de referência, você pode acessá-lo e utilizá-lo no seu ambiente do Eventhouse.

Converter consultas do Time Series Insights para a Linguagem de Consulta Kusto

No caso das consultas, a recomendação é usar a Linguagem de Consulta Kusto no Eventhouse.

Eventos

{
  "searchSpan": {
    "from": "2021-11-29T22:09:32.551Z",
    "to": "2021-12-06T22:09:32.551Z"
  },
  "predicate": {
    "predicateString": "([device_id] = 'device_0') AND ([has_error] != null OR [error_code] != null)"
  },
  "top": {
    "sort": [
      {
        "input": {
          "builtInProperty": "$ts"
        },
        "order": "Desc"
      }
    ],
    "count": 100
  }
}
	events
| where _timestamp >= datetime("2021-11-29T22:09:32.551Z") and _timestamp < datetime("2021-12-06T22:09:32.551Z") and deviceid == "device_0" and (not(isnull(haserror)) or not(isempty(errorcode)))
| top 100 by _timestamp desc

Agregações

{
    "searchSpan": {
      "from": "2021-12-04T22:30:00Z",
      "to": "2021-12-06T22:30:00Z"
    },
    "predicate": {
      "eq": {
        "left": {
          "property": "DeviceId",
          "type": "string"
        },
        "right": "device_0"
      }
    },
    "aggregates": [
      {
        "dimension": {
          "uniqueValues": {
            "input": {
              "property": "DeviceId",
              "type": "String"
            },
            "take": 1
          }
        },
        "aggregate": {
          "dimension": {
            "dateHistogram": {
              "input": {
                "builtInProperty": "$ts"
              },
              "breaks": {
                "size": "2d"
              }
            }
          },
          "measures": [
            {
              "count": {}
            },
            {
              "sum": {
                "input": {
                  "property": "DataValue",
                  "type": "Double"
                }
              }
            },
            {
              "min": {
                "input": {
                  "property": "DataValue",
                  "type": "Double"
                }
              }
            },
            {
              "max": {
                "input": {
                  "property": "DataValue",
                  "type": "Double"
                }
              }
            }
          ]
        }
      }
    ]
  }

	let _q = events | where _timestamp >= datetime("2021-12-04T22:30:00Z") and _timestamp < datetime("2021-12-06T22:30:00Z") and deviceid == "device_0";
let _dimValues0 = _q | project deviceId | sample-distinct 1 of deviceId;
_q
| where deviceid in (_dimValues0) or isnull(deviceid)
| summarize
    _meas0 = count(),
    _meas1 = iff(isnotnull(any(datavalue)), sum(datavalue), any(datavalue)),
    _meas2 = min(datavalue),
    _meas3 = max(datavalue),
    by _dim0 = deviceid, _dim1 = bin(_timestamp, 2d)
| project
    _dim0,
    _dim1,
    _meas0,
    _meas1,
    _meas2,
    _meas3,
| sort by _dim0 nulls last, _dim1 nulls last