Migrowanie usługi Time Series Insights Gen2 do analizy w czasie rzeczywistym w usłudze Microsoft Fabric
Uwaga
Usługa Time Series Insights zostanie wycofana 7 lipca 2024 r. Rozważ migrację istniejących środowisk do alternatywnych rozwiązań tak szybko, jak to możliwe. Aby uzyskać więcej informacji na temat wycofywania i migracji, odwiedź naszą dokumentację.
Omówienie
Eventhouse to baza danych szeregów czasowych w analizie czasu rzeczywistego. Służy jako element docelowy do migrowania danych z dala od usługi Time Series Insights.
Zalecenia dotyczące migracji wysokiego poziomu.
Funkcja | Zalecana migracja |
---|---|
Pozyskiwanie danych JSON z centrum za pomocą spłaszczania i ucieczki | Pobieranie danych z usługi Azure Event Hubs |
Otwórz zimny sklep | Dostępność usługi Eventhouse OneLake |
Łącznik usługi Power BI | Użyj łącznika usługi Power BI usługi Eventhouse. Ręczne ponowne zapisywanie TSQ w języku KQL. |
Łącznik platformy Spark | Migrowanie danych do usługi Eventhouse. Używanie notesu z platformą Apache Spark do wykonywania zapytań dotyczących magazynu zdarzeń lub eksplorowania danych w usłudze Lakehouse za pomocą notesu |
Przekazywanie zbiorcze | Pobieranie danych z usługi Azure Storage |
Model szeregów czasowych | Można wyeksportować jako plik JSON. Można zaimportować do usługi Eventhouse. Semantyka programu Kusto Graph umożliwia modelowanie, przechodzenie i analizowanie hierarchii modelu szeregów czasowych jako grafu |
Eksplorator szeregów czasowych | Pulpit nawigacyjny w czasie rzeczywistym, raport usługi Power BI lub pisanie niestandardowego pulpitu nawigacyjnego przy użyciu narzędzia KustoTrender |
Język zapytań | Ponowne zapisywanie zapytań w języku KQL. |
Migrowanie telemetrii
Aby pobrać kopię wszystkich danych w środowisku, użyj PT=Time
folderu na koncie magazynu. Aby uzyskać więcej informacji, zobacz Magazyn danych.
Krok 1 migracji — uzyskiwanie statystyk dotyczących danych telemetrycznych
Data
- Omówienie env
- Identyfikator środowiska rejestrowania z pierwszej części nazwy FQDN dostępu do danych (na przykład d390b0b0-1445-4c0c-8365-68d6382c1c2a z .env.crystal-dev.windows-int.net)
- Omówienie usługi Env — Konfiguracja magazynu —>> konto magazynu
- Uzyskiwanie statystyk folderów za pomocą Eksplorator usługi Storage
- Rozmiar rekordu
PT=Time
i liczba obiektów blob folderu.
- Rozmiar rekordu
Migracja — krok 2 — migrowanie danych do usługi Eventhouse
Tworzenie magazynu zdarzeń
Aby skonfigurować magazyn zdarzeń dla procesu migracji, wykonaj kroki opisane w artykule Tworzenie magazynu zdarzeń.
Wprowadzanie danych
Aby pobrać dane dla konta magazynu odpowiadającego wystąpieniu usługi Time Series Insights, wykonaj kroki pobierania danych z usługi Azure Storage.
Upewnij się, że:
Wybierz odpowiedni kontener i podaj jego identyfikator URI wraz z wymaganym tokenem SAS lub kluczem konta.
Skonfiguruj ścieżkę folderu filtrów plików,
V=1/PT=Time
aby filtrować odpowiednie obiekty blob.Zweryfikuj wywnioskowany schemat i usuń wszystkie rzadko wykonywane zapytania kolumny, zachowując co najmniej znacznik czasu, kolumny TSID i wartości. Aby upewnić się, że wszystkie dane są kopiowane do usługi Eventhouse, dodaj kolejną kolumnę i użyj przekształcenia mapowania DropMappedFields .
Ukończ proces pozyskiwania.
Wykonywanie zapytań dotyczących danych
Po pomyślnym pozyskiwaniu danych możesz rozpocząć eksplorowanie ich przy użyciu zestawu zapytań KQL. Jeśli chcesz uzyskać dostęp do danych z niestandardowej aplikacji klienckiej, usługa Eventhouse udostępnia zestawy SDK dla głównych języków programowania, takich jak C# (link), Java (link) i Node.js (link).
Migrowanie modelu szeregów czasowych do usługi Azure Data Explorer
Model można pobrać w formacie JSON ze środowiska TSI przy użyciu środowiska użytkownika eksploratora usługi TSI lub interfejsu API usługi Batch TSM. Następnie model można zaimportować do usługi Eventhouse.
Pobierz rozwiązanie TSM z środowiska użytkownika usługi TSI.
Usuń pierwsze trzy wiersze przy użyciu programu Visual Studio Code lub innego edytora.
Za pomocą programu Visual Studio Code lub innego edytora wyszukaj i zastąp ciąg jako wyrażenie regularne
\},\n \{
}{
Pozyskiwanie jako kodu JSON do usługi ADX jako oddzielnej tabeli przy użyciu polecenia Pobierz dane z jednego pliku.
Po przeprowadzeniu migracji danych szeregów czasowych do usługi Eventhouse w funkcji Analizy w czasie rzeczywistym w sieci szkieletowej możesz użyć możliwości semantyki programu Kusto Graph w celu kontekstowania i analizowania danych. Semantyka programu Kusto Graph umożliwia modelowanie, przechodzenie i analizowanie hierarchii modelu szeregów czasowych jako grafu. Korzystając z semantyki programu Kusto Graph, możesz uzyskać wgląd w relacje między różnymi jednostkami w danych szeregów czasowych, takich jak zasoby, lokacje i punkty danych. Te szczegółowe informacje ułatwiają zrozumienie zależności i interakcji między różnymi składnikami systemu.
Tłumaczenie zapytań szeregów czasowych (TSQ) na język 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 z filtrem
{
"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 z przewidywaną zmienną
{
"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']
Agregacje
{
"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
Agregacje z filtrem
{
"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
Nie ma zautomatyzowanego procesu migracji raportów usługi Power BI opartych na usłudze Time Series Insights. Wszystkie zapytania korzystające z danych przechowywanych w usłudze Time Series Insights muszą zostać zmigrowane do usługi Eventhouse.
Aby utworzyć wydajne raporty szeregów czasowych w usłudze Power BI, zalecamy zapoznanie się z następującymi artykułami w blogu informacyjnym:
- Możliwości szeregów czasowych usługi Eventhouse w usłudze Power BI
- Jak używać parametrów dynamicznych języka M bez większości ograniczeń
- Wartości przedziału czasu/czasu trwania w języku KQL, dodatku Power Query i usłudze Power BI
- Ustawienia zapytań języka KQL w usłudze Power BI
- Filtrowanie i wizualizowanie danych Kusto w czasie lokalnym
- Raporty niemal w czasie rzeczywistym w usłudze PBI + Kusto
- Modelowanie usługi Power BI za pomocą usługi ADX — ściągawka
Zapoznaj się z tymi zasobami, aby uzyskać wskazówki dotyczące tworzenia skutecznych raportów szeregów czasowych w usłudze Power BI.
Pulpit nawigacyjny w czasie rzeczywistym
Pulpit nawigacyjny w czasie rzeczywistym w sieci szkieletowej to kolekcja kafelków, opcjonalnie uporządkowana na stronach, na których każdy kafelek ma zapytanie bazowe i wizualną reprezentację. Zapytania język zapytań Kusto (KQL) można eksportować natywnie do pulpitu nawigacyjnego jako wizualizacje, a później modyfikować ich podstawowe zapytania i formatowanie wizualne zgodnie z potrzebami. Oprócz łatwości eksploracji danych to w pełni zintegrowane środowisko pulpitu nawigacyjnego zapewnia lepszą wydajność zapytań i wizualizacji.
Zacznij od utworzenia nowego pulpitu nawigacyjnego w funkcji Analizy w czasie rzeczywistym w sieci szkieletowej. Ta zaawansowana funkcja umożliwia eksplorowanie danych, dostosowywanie wizualizacji, stosowanie formatowania warunkowego i korzystanie z parametrów. Ponadto możesz tworzyć alerty bezpośrednio z pulpitów nawigacyjnych w czasie rzeczywistym, zwiększając możliwości monitorowania. Aby uzyskać szczegółowe instrukcje dotyczące tworzenia pulpitu nawigacyjnego, zapoznaj się z oficjalną dokumentacją.