Sdílet prostřednictvím


Migrace Time Series Insights Gen2 na Real-Time Intelligence v Microsoft Fabric

Poznámka

Služba Time Series Insights bude vyřazena 7. července 2024. Zvažte migraci stávajících prostředí na alternativní řešení co nejdříve. Pro více informací o vyřazení a migraci navštivte naši dokumentaci .

Přehled

Eventhouse je databáze časových řad v Real-Time Intelligence. Slouží jako cíl pro migraci dat mimo Time Series Insights.

Doporučení pro migraci na vysoké úrovni

Vlastnost Doporučená migrace
Ingestování JSON z centra s transformací a escapováním získání dat ze služby Azure Event Hubs
Otevřít studené úložiště Dostupnost Eventhouse OneLake
Konektor Power BI Použijte konektor Eventhouse Power BI. Přepište TSQ na KQL ručně.
Konektor Sparku Migrujte data do Eventhouse. Použití poznámkového bloku s Apache Sparkem k dotazování v eventhousu nebo Prozkoumání dat ve vašem datovém jezeře pomocí poznámkového bloku
Hromadné nahrání Získání dat ze služby Azure Storage
Model časové řady Dá se exportovat jako soubor JSON. Do Eventhouse je možné importovat. Sémantika grafů Kusto umožňuje modelování, procházení a analýzu hierarchie modelu časové řady jako grafu
Průzkumník časových řad Real-Time řídicího panelu, sestavy Power BI nebo vytvoření vlastního řídicího panelu pomocí KustoTrender
Dotazovací jazyk Přepište dotazy v KQL.

Migrace telemetrie

Pokud chcete načíst kopii všech dat v prostředí, použijte PT=Time složku v účtu úložiště. Další informace naleznete v tématu Datové úložiště.

Migrace – krok 1 – získání statistik o telemetrických datech

Údaje

  1. Přehled prostředí
    • Zapište ID prostředí z první části plně kvalifikovaného názvu domény Data Access (například d390b0b0-1445-4c0c-8365-68d6382c1c2a z .env.crystal-dev.windows-int.net)
  2. Přehled prostředí – konfigurace úložiště> – účet úložiště>
  3. Získání statistik složek pomocí Průzkumníka služby Storage
    • Velikost záznamu a počet blobů ve složce PT=Time.

Migrace – krok 2 – migrace dat do eventhouse

Vytvořit prostor pro akce

Pokud chcete pro proces migrace nastavit událostní dům, postupujte podle kroků v části jak vytvořit událostní dům.

Příjem dat

Pokud chcete načíst data pro účet úložiště odpovídající vaší instanci Time Series Insights, postupujte podle kroků v získávání dat ze služby Azure Storage.

Ujistěte se, že:

  1. Vyberte příslušný kontejner a zadejte jeho identifikátor URI spolu s potřebným tokenem SAS nebo klíčem účtu.

  2. Nakonfigurujte cestu ke složce filtrů souborů jako V=1/PT=Time pro filtrování příslušných objektů blob.

  3. Ověřte odvozené schéma a odeberte všechny zřídka dotazované sloupce a zachovejte alespoň časové razítko, sloupce TSID a hodnoty. Aby se všechna vaše data zkopírovala do Eventhouse, přidejte další sloupec a použijte DropMappedFields mapovací transformaci.

  4. Dokončete proces příjmu dat.

Dotazování na data

Teď, když jste data úspěšně ingestovali, můžete začít je zkoumat pomocí sady dotazů KQL. Pokud potřebujete získat přístup k datům z vlastní klientské aplikace, eventhouse poskytuje sady SDK pro hlavní programovací jazyky, jako je C# (link), Java (link) a Node.js (link).

Migrace modelu time series do Azure Data Exploreru

Model si můžete stáhnout ve formátu JSON z prostředí TSI pomocí uživatelského rozhraní PRŮZKUMNÍKa TSI nebo rozhraní API služby TSM Batch. Model je pak možné importovat do eventhouse.

  1. Stáhněte si TSM z uživatelského prostředí TSI.

  2. Odstraňte první tři řádky pomocí editoru Visual Studio Code nebo jiného editoru.

    snímek obrazovky s migrací TSM do Azure Data Exploreru – Odstranění prvních 3 řádků

  3. Pomocí editoru Visual Studio Code nebo jiného editoru vyhledejte a nahraďte výraz regex \},\n \{}{

    snímek obrazovky s migrací TSM do Azure Data Exploreru – vyhledání a nahrazení

  4. Importovat jako JSON do ADX jako samostatnou tabulku pomocí Získání dat z jednoho souboru.

Po migraci dat časových řad do Eventhouse v Prostředcích Infrastruktury Real-Time Intelligence můžete využít sílu sémantiky grafů Kusto ke kontextualizaci a analýze dat. Sémantika grafu Kusto umožňuje modelovat, procházet a analyzovat hierarchii modelu časové řady jako graf. Pomocí sémantiky grafů Kusto můžete získat přehled o vztazích mezi různými entitami v datech časových řad, jako jsou prostředky, weby a datové body. Tyto přehledy vám pomůžou porozumět závislostem a interakcím mezi různými součástmi systému.

Překlad dotazů časových řad (TSQ) do KQL

ZískatUdálosti

{
  "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

Získat události s 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 s projektovanou proměnnou

{
  "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 s 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

Neexistuje žádný automatizovaný proces migrace sestav Power BI založených na Time Series Insights. Všechny dotazy, které spoléhají na data uložená v Time Series Insights, musí být migrovány do eventhouse.

Pokud chcete vytvářet efektivní sestavy časových řad v Power BI, doporučujeme odkazovat na následující informativní blogové články:

Pokyny k vytváření efektivních sestav časových řad v Power BI najdete v těchto zdrojích informací.

řídicí panel Real-Time

Řídicí panel Real-Time ve Fabric je kolekce dlaždic, které jsou volitelně uspořádány na stránkách, kde má každá dlaždice podkladový dotaz a vizuální reprezentaci. Dotazy Jazyka KQL (Kusto Query Language) můžete nativně exportovat do řídicího panelu jako vizuály a později podle potřeby upravit jejich podkladové dotazy a formátování vizuálů. Kromě snadného zkoumání dat poskytuje toto plně integrované prostředí řídicího panelu lepší výkon dotazů a vizualizací.

Začněte vytvořením nového řídicího panelu ve Fabric Real-Time Intelligence. Tato výkonná funkce umožňuje zkoumat data, přizpůsobovat vizuály, používat podmíněné formátování a využívat parametry. Kromě toho můžete vytvářet výstrahy přímo z řídicích panelů Real-Time a vylepšit tak možnosti monitorování. Podrobné pokyny k vytvoření řídicího panelu najdete v oficiální dokumentaci.