Migrowanie usługi Time Series Insights Gen2 do analizy Real-Time w usłudze Microsoft Fabric
Notatka
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 wycofania z użytku i migracji, odwiedź naszą dokumentację .
Przegląd
Eventhouse to baza danych szeregów czasowych w Real-Time Intelligence. Służy jako element docelowy do migrowania danych z dala od usługi Time Series Insights.
Ogólne zalecenia dotyczące migracji.
Cecha | 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ść Eventhouse OneLake |
Konektor Power BI | Użyj Eventhouse Power BI Connector. 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 usługi Eventhouse lub Eksplorowanie danych w usłudze Lakehouse przy użyciu 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 grafów Kusto umożliwia modelowanie, przeszukiwanie i analizowanie hierarchii modelu szeregów czasowych jako graf |
Eksplorator szeregów czasowych | Real-Time Dashboard, raport Power BI lub stworzenie niestandardowego pulpitu nawigacyjnego za pomocą KustoTrender |
Język zapytań | Ponowne zapisywanie zapytań w języku KQL. |
Migrowanie telemetrii
Aby pobrać kopię wszystkich danych w środowisku, użyj folderu PT=Time
na koncie magazynowym. Aby uzyskać więcej informacji, zobacz Data Storage.
Krok 1 migracji — uzyskiwanie statystyk dotyczących danych telemetrycznych
Dane
- Omówienie środowiska
- Zapisz identyfikator środowiska 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ą Eksploratora usługi Storage
- Rozmiar rekordów i liczba obiektów blob w folderze
PT=Time
.
- Rozmiar rekordów i liczba obiektów blob w folderze
Migracja — krok 2 — migrowanie danych do usługi Eventhouse
Utwórz Dom Wydarzeń
Aby skonfigurować Eventhouse dla procesu migracji, wykonaj kroki opisane w tworzeniu Eventhouse.
Pozyskiwanie danych
Aby pobrać dane dla konta magazynu odpowiadającego Twojemu wystąpieniu usługi Time Series Insights, wykonaj kroki opisane w sekcji dotyczącej 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 jako
V=1/PT=Time
, aby filtrować odpowiednie obiekty blob.Zweryfikuj wywnioskowany schemat i usuń wszelkie kolumny, które są rzadko używane w zapytaniach, zachowując co najmniej kolumny ze znacznikiem czasu, TSID i wartościami. Aby upewnić się, że wszystkie dane są kopiowane do Eventhouse, dodaj kolejną kolumnę i użyj przekształcenia mapowania DropMappedFields.
Ukończ proces importowania.
Wykonywanie zapytań dotyczących danych
Po pomyślnym wczytaniu danych możesz rozpocząć ich eksplorację za pomocą zapytania KQL . Jeśli musisz 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 z TSI Environment przy użyciu interfejsu TSI Explorer lub interfejsu API TSM Batch. 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.
Używając programu Visual Studio Code lub innego edytora, wyszukaj
\},\n \{
i zastąp go}{
, używając wyrażeń regularnych.Przesyłanie jako JSON do Azure Data Explorer jako osobna tabela przy użyciu Pobieranie danych z jednego pliku.
Po przeprowadzeniu migracji danych szeregów czasowych do usługi Eventhouse w usłudze Fabric Real-Time Intelligence możesz użyć możliwości semantyki programu Kusto Graph, aby kontekstować i analizować dane. 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
PobierzWydarzenia
{
"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']
AgregacjaSerii
{
"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ń KQL w usłudze Power BI
- filtrowanie i wizualizowanie danych Kusto w czasie lokalnym
- Raporty niemal w czasie rzeczywistym w Power BI i Kusto
- modelowanie Power BI z ADX — poradnik
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 Real-Time
Pulpit nawigacyjny Real-Time 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ęzyka Kusto Query Language (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 usłudze Fabric Real-Time Intelligence. 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 poziomu pulpitów nawigacyjnych Real-Time, zwiększając możliwości monitorowania. Aby uzyskać szczegółowe instrukcje dotyczące tworzenia pulpitu nawigacyjnego, zapoznaj się z oficjalną dokumentacją .