Migrazione di Time Series Insights Gen2 all'intelligence in tempo reale 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 altre informazioni sulla deprecazione e la migrazione, visitare la documentazione.
Panoramica
Eventhouse è il database time series in Real-Time Intelligence. Funge da destinazione per la migrazione dei dati da Time Series Insights.
Raccomandazioni generali sulla migrazione.
Funzionalità | Migrazione consigliata |
---|---|
Inserimento di JSON dall'hub con appiattimento ed escape | Ottenere dati da Hub eventi di Azure |
Aprire l'archivio ad accesso sporadico | Disponibilità di OneLake di Eventhouse |
Connettore Power BI | Usare Il connettore Power BI di Eventhouse. 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'istanza di Eventhouse o esplorare i dati in una lakehouse con un notebook |
Caricamento in blocco | Ottenere dati da Archiviazione di Azure |
Modello Time Series | Può essere esportato come file JSON. Può essere importato in Eventhouse. La semantica del grafo Kusto consente il modello, l'attraversamento e l'analisi della gerarchia del modello Time Series come grafico |
Esplora serie temporali | Dashboard in tempo reale, report di Power BI o scrittura di un dashboard personalizzato con 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 PT=Time
la cartella nell'account di archiviazione. Per altre informazioni, vedere Archiviazione dati.
Passaggio 1 della migrazione: ottenere statistiche sui dati di telemetria
Dati
- Panoramica di Env
- Record Environment ID from first part of Data Access FQDN (ad esempio, d390b0b0-1445-4c0c-8365-68d6382c1c2a From .env.crystal-dev.windows-int.net)
- Panoramica di Env -> Configurazione archiviazione -> Account di archiviazione
- Usare Storage Explorer per ottenere statistiche sulle cartelle
- Dimensioni del record e numero di BLOB della
PT=Time
cartella.
- Dimensioni del record e numero di BLOB della
Passaggio 2 della migrazione: eseguire la migrazione dei dati a eventhouse
Creare un'istanza di Eventhouse
Per configurare una eventhouse per il processo di migrazione, seguire la procedura descritta in Creazione di un'istanza di Eventhouse.
Inserimento di dati
Per recuperare i dati per l'account di archiviazione corrispondente all'istanza di Time Series Insights, seguire i passaggi per ottenere dati da Archiviazione di Azure.
Verificare quanto segue:
Selezionare il contenitore appropriato e specificare l'URI insieme al token di firma di accesso condiviso o alla chiave dell'account necessaria.
Configurare il percorso della cartella filtri file per
V=1/PT=Time
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 aggiungere un'altra colonna e usare la trasformazione mapping DropMappedFields .
Completare il processo di inserimento.
Eseguire query sui dati
Dopo aver inserito correttamente i dati, è 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 Time Series ad Azure Esplora dati
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 come regex
\},\n \{
con}{
Inserire come JSON in ADX come tabella separata usando Recupera 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 della 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
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 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 in Eventhouse.
Per creare report di serie temporali efficienti in Power BI, è consigliabile fare riferimento agli articoli di blog informativi seguenti:
- Funzionalità della serie temporale eventhouse in Power BI
- Come usare i parametri dinamici M senza la maggior parte delle limitazioni
- Valori di intervallo di tempo/durata in KQL, Power Query e Power BI
- Impostazioni query KQL in Power BI
- Filtro e visualizzazione dei 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.
Dashboard in tempo reale
Un dashboard in tempo reale 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 Linguaggio di query Kusto (KQL) in un dashboard come oggetti 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. È anche possibile creare avvisi direttamente dai dashboard in tempo reale, migliorando le funzionalità di monitoraggio. Per istruzioni dettagliate su come creare un dashboard, vedere la documentazione ufficiale.