Udostępnij za pośrednictwem


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

  1. 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)
  2. Omówienie usługi Env — Konfiguracja magazynu —>> konto magazynu
  3. Uzyskiwanie statystyk folderów za pomocą Eksplorator usługi Storage
    • Rozmiar rekordu PT=Time i liczba obiektów blob folderu.

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:

  1. Wybierz odpowiedni kontener i podaj jego identyfikator URI wraz z wymaganym tokenem SAS lub kluczem konta.

  2. Skonfiguruj ścieżkę folderu filtrów plików, V=1/PT=Time aby filtrować odpowiednie obiekty blob.

  3. 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 .

  4. 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.

  1. Pobierz rozwiązanie TSM z środowiska użytkownika usługi TSI.

  2. Usuń pierwsze trzy wiersze przy użyciu programu Visual Studio Code lub innego edytora.

    Zrzut ekranu przedstawiający migrację TSM do usługi Azure Data Explorer — usuwanie pierwszych 3 wierszy

  3. Za pomocą programu Visual Studio Code lub innego edytora wyszukaj i zastąp ciąg jako wyrażenie regularne \},\n \{}{

    Zrzut ekranu przedstawiający migrację TSM do usługi Azure Data Explorer — wyszukiwanie i zastępowanie

  4. 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:

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ą.