Migrazione di Time Series Insights Gen2 a Real-Time Intelligence in Microsoft Fabric
Nota
Il servizio Time Series Insights verrà ritirato il 7 luglio 2024. Valutare la possibilità di eseguire la migrazione di ambienti esistenti a soluzioni alternative il prima possibile. Per ulteriori informazioni sulla deprecazione e la migrazione, vedere la documentazione .
Panoramica
Eventhouse è la banca dati di serie temporali in Real-Time Intelligence. Funge da destinazione per la migrazione dei dati da Time Series Insights.
Raccomandazioni generali sulla migrazione.
Caratteristica | Migrazione consigliata |
---|---|
Inserimento di JSON dall'hub con appiattimento ed escape | Ottenere dati da Hub eventi di Azure |
Aprire il deposito refrigerato | Disponibilità di Eventhouse OneLake |
Connettore Power BI | Usare Connettore Eventhouse Power BI. Riscrivere TSQ in KQL manualmente. |
Connettore Spark | Eseguire la migrazione dei dati a Eventhouse. Usare un notebook con Apache Spark per eseguire query su un Eventhouse o Esplorare i dati nel Lakehouse con un notebook |
Caricamento massivo | Ottenere dati da archiviazione Azure |
Modello Time Series | Può essere esportato come file JSON. Può essere importata su Eventhouse. la semantica del grafo Kusto consente la modellazione, l'attraversamento e l'analisi della gerarchia del modello di serie temporali come grafo |
Esplora serie temporali | Real-Time dashboard, report di Power BI o creare una dashboard personalizzata usando KustoTrender |
Linguaggio di query | Riscrivere le query in KQL. |
Migrazione dei dati di telemetria
Per recuperare la copia di tutti i dati nell'ambiente, usare la cartella PT=Time
nell'account di storage. Per altre informazioni, vedere Data Storage.
Passaggio 1 della migrazione: ottenere statistiche sui dati di telemetria
Dati
- Panoramica di Env
- Registra l'ID ambiente dalla prima parte del FQDN di Data Access (ad esempio, d390b0b0-1445-4c0c-8365-68d6382c1c2a da .env.crystal-dev.windows-int.net)
- Panoramica di Env - Configurazione dell'archiviazione> - Account di archiviazione>
- Usare Storage Explorer per ottenere statistiche sulle cartelle
- Dimensione dei record e numero di BLOB della cartella
PT=Time
.
- Dimensione dei record e numero di BLOB della cartella
Passaggio 2 della migrazione: eseguire la migrazione dei dati a eventhouse
Creare un Eventhouse
Per configurare un'Eventhouse per il processo di migrazione, seguire i passaggi descritti nella sezione "creazione di un'Eventhouse".
Inserimento dati
Per recuperare i dati per l'account di archiviazione corrispondente alla tua istanza di Time Series Insights, seguire i passaggi in Getting Data from Azure Storage.
Assicurarsi di:
Selezionare il contenitore appropriato e specificare il relativo URI, insieme al token di firma di accesso condiviso necessario o chiave dell'account.
Configurare il percorso della cartella filtri file come
V=1/PT=Time
per filtrare i BLOB pertinenti.Verificare lo schema dedotto e rimuovere eventuali colonne raramente sottoposte a query, mantenendo almeno il timestamp, le colonne TSID e i valori. Per assicurarsi che tutti i dati vengano copiati in Eventhouse, aggiungete un'altra colonna e usate la trasformazione di mapping DropMappedFields.
Completare il processo di inserimento.
Esecuzione di query sui dati
Ora che i dati sono stati inseriti correttamente, è possibile iniziare a esplorarli usando un set di query KQL . Se è necessario accedere ai dati dall'applicazione client personalizzata, Eventhouse fornisce SDK per i principali linguaggi di programmazione, ad esempio C# (collegamento), Java (collegamento) e Node.js (collegamento).
Migrazione del modello di Serie Temporale in Azure Data Explorer
Il modello può essere scaricato in formato JSON dall'ambiente TSI usando l'esperienza utente di Tsi Explorer o l'API Batch TSM. È quindi possibile importare il modello in Eventhouse.
Scaricare TSM dall'esperienza utente tsi.
Eliminare le prime tre righe usando Visual Studio Code o un altro editor.
Usando Visual Studio Code o un altro editor, cercare e sostituire utilizzando il pattern regex
\},\n \{
con}{
.Inserire come JSON in ADX come tabella separata usando Recuperare dati da un singolo file.
Dopo aver eseguito la migrazione dei dati delle serie temporali a Eventhouse in Fabric Real-Time Intelligence, è possibile usare la potenza di semantica del grafo Kusto per contestualizzare e analizzare i dati. La semantica del grafo Kusto consente di modellare, attraversare e analizzare la gerarchia del modello Time Series come grafico. Usando la semantica del grafo Kusto, è possibile ottenere informazioni dettagliate sulle relazioni tra entità diverse nei dati delle serie temporali, ad esempio asset, siti e punti dati. Queste informazioni dettagliate consentono di comprendere le dipendenze e le interazioni tra vari componenti del sistema.
Convertire query time series (TSQ) in KQL
OttieniEventi
{
"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 variabile proiettata
{
"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
Non esiste un processo automatizzato per la migrazione dei report di Power BI basati su Time Series Insights. È necessario eseguire la migrazione di tutte le query basate sui dati archiviati in Time Series Insights su Eventhouse.
Per creare report di serie temporali efficienti in Power BI, è consigliabile fare riferimento agli articoli di blog informativi seguenti:
- Funzionalità delle serie temporali di Eventhouse in Power BI
- Come usare parametri dinamici M senza la maggior parte delle limitazioni
- valori di intervallo di tempo/durata in KQL, Power Query e Power BI
- impostazioni di query KQL in Power BI
- Filtrare e visualizzare i dati Kusto nell'ora locale
- report quasi in tempo reale in PBI + Kusto
- modellazione di Power BI con ADX - Foglio informativo
Per indicazioni sulla creazione di report serie temporali efficaci in Power BI, vedere queste risorse.
Real-Time Dashboard
Un Real-Time Dashboard in Fabric è una raccolta di riquadri, organizzati facoltativamente in pagine, in cui ogni riquadro ha una query sottostante e una rappresentazione visiva. È possibile esportare in modo nativo le query KQL (Kusto Query Language) in un dashboard come elementi visivi e successivamente modificare le query sottostanti e la formattazione visiva in base alle esigenze. Oltre a semplificare l'esplorazione dei dati, questa esperienza di dashboard completamente integrata offre prestazioni di query e visualizzazione migliorate.
Per iniziare, creare un nuovo dashboard in Fabric Real-Time Intelligence. Questa potente funzionalità consente di esplorare i dati, personalizzare gli oggetti visivi, applicare la formattazione condizionale e usare i parametri. Inoltre, è possibile creare avvisi direttamente dai dashboard di Real-Time, migliorando le funzionalità di monitoraggio. Per istruzioni dettagliate su come creare un dashboard, vedere la documentazione ufficiale .