Migrazione di Time Series Insights Gen1 ad Azure Esplora dati

Nota

Il servizio Time Series Insights (TSI) non sarà più supportato dopo marzo 2025. Prendere in considerazione la migrazione degli ambienti TSI esistenti alle soluzioni alternative non appena possibile. Per altre informazioni sulla deprecazione e la migrazione, visitare la documentazione.

Panoramica

È consigliabile configurare il cluster di Azure Esplora dati con un nuovo gruppo di consumer dall'hub eventi o hub IoT e attendere il passaggio del periodo di conservazione e compilare Esplora dati di Azure con gli stessi dati dell'ambiente Time Series Insights. Se i dati di telemetria devono essere esportati dall'ambiente Time Series Insights, il suggerimento consiste nell'usare l'API query Time Series Insights per scaricare gli eventi in batch e serializzare in formato obbligatorio. Per i dati di riferimento, è possibile usare l'API Esplora dati di Time Series Insights o Reference Data per scaricare il set di dati di riferimento e caricarlo in Azure Esplora dati come un'altra tabella. È quindi possibile usare viste materializzate in Azure Esplora dati per aggiungere dati di riferimento ai dati di telemetria. Usare la visualizzazione materializzata con la funzione di aggregazione arg_max() che otterrà il record più recente per entità, come illustrato nell'esempio seguente. Per altre informazioni sulle visualizzazioni materializzate, vedere la documentazione seguente: Casi d'uso delle visualizzazioni materializzate.

.create materialized-view MVName on table T
{
    T
    | summarize arg_max(Column1,*) by Column2
}

Tradurre query di Time Series Insights in KQL

Per le query, è consigliabile usare KQL in Azure Esplora dati.

Eventi

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

Aggregazioni

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