Sdílet prostřednictvím


Modul plug-in dotazů Azure Digital Twins pro Azure Data Explorer

Tento článek vysvětluje modul plug-in dotazů Azure Digital Twin pro Azure Data Explorer, jak používat data IoT Azure Data Exploreru se službou Azure Digital Twins, jak mapovat data napříč Azure Data Explorerem a Azure Digital Twins a dalšími informacemi.

Modul plug-in Azure Digital Twins pro Azure Data Explorer umožňuje spouštět dotazy Azure Data Exploreru, které přistupují k datům v grafech Azure Digital Twins a databázích časových řad Azure Data Exploreru a kombinují je. Pomocí modulu plug-in můžete kontextovat různorodá data časových řad tím, že zdůvodníte digitální dvojčata a jejich vztahy, abyste získali přehled o chování modelovaných prostředí.

Pomocí tohoto modulu plug-in můžete například napsat dotaz Kusto, který:

  1. Vybere digitální dvojčata, která jsou zajímavá prostřednictvím modulu plug-in dotazů Azure Digital Twins.
  2. Spojí tato dvojčata s příslušnou časovou řadou v Azure Data Exploreru a pak
  3. Provádí pokročilé analýzy časových řad u těchto dvojčat.

Kombinace dat z grafu dvojčete ve službě Azure Digital Twins s daty časových řad v Azure Data Exploreru vám může pomoct pochopit provozní chování různých částí vašeho řešení.

Použití modulu plug-in

Modul plug-in můžete vyvolat v dotazu Kusto pomocí následujícího příkazu. Existují dva zástupné symboly <Azure-Digital-Twins-endpoint> , <Azure-Digital-Twins-query>což jsou řetězce představující koncový bod instance služby Azure Digital Twins a dotaz Azure Digital Twins.

evaluate azure_digital_twins_query_request(<Azure-Digital-Twins-endpoint>, <Azure-Digital-Twins-query>) 

Modul plug-in funguje voláním rozhraní API pro dotazy Azure Digital Twins a struktura dotazovacího jazyka je stejná jako při použití rozhraní API se dvěma výjimkami:

  • Zástupný * znak v klauzuli SELECT není podporován. Místo toho by dotazy Služby Azure Digital Twin spouštěné pomocí modulu plug-in měly používat aliasy v klauzuli SELECT .

    Představte si například následující dotaz Služby Azure Digital Twins, který se spouští pomocí rozhraní API:

    SELECT * FROM DIGITALTWINS
    

    Pokud chcete tento dotaz spustit při použití modulu plug-in, měl by se přepsat takto:

    SELECT T FROM DIGITALTWINS T
    
  • Názvy sloupců vrácené modulem plug-in nemusí začínat písmenem $. Použití aliasů v SELECT klauzuli také pomůže vyhnout se tomuto scénáři.

    Představte si například následující dotaz Služby Azure Digital Twins, který se spouští pomocí rozhraní API:

    SELECT T.$dtId, T.Temperature FROM DIGITALTWINS T
    

    Pokud chcete tento dotaz spustit při použití modulu plug-in, měl by se přepsat takto:

    SELECT T.$dtId as tid, T.Temperature FROM DIGITALTWINS T
    

Důležité

Uživatel modulu plug-in musí mít udělenou roli Čtenář dat Služby Azure Digital Twins nebo roli Vlastník dat služby Azure Digital Twins, protože se k ověření používá token Microsoft Entra uživatele. Informace o tom, jak přiřadit tuto roli, najdete v tématu Zabezpečení pro řešení Azure Digital Twins.

Další informace o použití modulu plug-in najdete v dokumentaci Kusto pro modul plug-in azure_digital_twins_query_request.

Pokud chcete zobrazit ukázkové dotazy a dokončit názorný postup s ukázkovými daty, projděte si modul plug-in dotazů Azure Digital Twins pro Azure Data Explorer: Ukázkové dotazy a názorný postup na GitHubu.

Ingestování dat Azure Digital Twins do Azure Data Exploreru

Před dotazováním pomocí modulu plug-in budete muset ingestovat data Azure Digital Twins do Azure Data Exploreru. Můžete to provést dvěma hlavními způsoby: prostřednictvím funkce historie dat nebo přímým příjmem dat. V následujících částech najdete podrobnější popis uvedených možností.

Ingestování s historií dat

Nejjednodušší způsob, jak ingestovat data IoT z Azure Digital Twins do Azure Data Exploreru , je použít funkci historie dat. Tato funkce umožňuje nastavit propojení mezi instancí služby Azure Digital Twins a clusterem Azure Data Exploreru a aktualizacemi grafu (včetně aktualizací vlastností dvojčat, událostí životního cyklu dvojčat a událostí životního cyklu vztahu) se automaticky historizují do clusteru. To je dobrá volba, pokud k životu používáte telemetrická data zařízení. Další informace o této funkci najdete v tématu Historie dat (pomocí Azure Data Exploreru).

Přímý příjem dat

Můžete se také rozhodnout ingestovat data IoT přímo do clusteru Azure Data Exploreru ze služby IoT Hub nebo z jiných zdrojů. Graf Azure Digital Twins se pak použije k kontextování dat časových řad pomocí společných dotazů Azure Digital Twins nebo Azure Data Exploreru. Tato možnost je dobrou volbou pro úlohy přímého příjmu dat– nebudete ale moct využívat architekturu založenou na událostech služby Azure Digital Twins k aktualizaci dalších dvojčat, aktivaci podřízených služeb nebo generování oznámení při změně stavu dvojčat. Další informace o tomto procesu najdete ve zbývající části této části.

Mapování dat v Azure Data Exploreru a Azure Digital Twins

Pokud ingestujete data časových řad přímo do Azure Data Exploreru, možná budete muset tato nezpracovaná data časových řad převést na schéma vhodné pro společné dotazy Azure Digital Twins nebo Azure Data Exploreru.

Zásady aktualizace v Azure Data Exploreru umožňují automaticky transformovat a přidávat data do cílové tabulky při každém vložení nových dat do zdrojové tabulky.

Pokud se ID senzoru v telemetrických datech vašeho zařízení liší od odpovídajícího ID dvojčete ve službě Azure Digital Twins, můžete pomocí zásad aktualizace rozšířit nezpracovaná data časových řad ID dvojčete a zachovat je v cílové tabulce. Pomocí ID dvojčete je pak možné připojit cílovou tabulku k digitálním dvojčatům vybraným modulem plug-in Azure Digital Twins.

Řekněme například, že jste vytvořili následující tabulku, která uchovává nezpracovaná data časových řad, která proudí do instance Azure Data Exploreru.

.create-merge table rawData (Timestamp:datetime, someId:string, Value:string, ValueType:string)  

Můžete vytvořit tabulku mapování, která bude souviset s ID časových řad s ID dvojčat a dalšími nepovinnými poli.

.create-merge table mappingTable (someId:string, twinId:string, otherMetadata:string) 

Pak vytvořte cílovou tabulku, ve které se budou uchovávat rozšířená data časových řad.

.create-merge table timeseriesSilver (twinId:string, Timestamp:datetime, someId:string, otherMetadata:string, ValueNumeric:real, ValueString:string)  

Dále vytvořte funkci Update_rawData pro obohacení nezpracovaných dat jejich spojením s mapovací tabulkou. Tím přidáte ID dvojčete do výsledné cílové tabulky.

.create-or-alter function with (folder = "Update", skipvalidation = "true") Update_rawData() { 
rawData 
| join kind=leftouter mappingTable on someId 
| project 
    Timestamp, ValueNumeric = toreal(Value), ValueString = Value, ... 
} 

Nakonec vytvořte zásadu aktualizace pro volání funkce a aktualizujte cílovou tabulku.

.alter table timeseriesSilver policy update 
@'[{"IsEnabled": true, "Source": "rawData", "Query": "Update_rawData()", "IsTransactional": false, "PropagateIngestionProperties": false}]' 

Po vytvoření cílové tabulky můžete pomocí modulu plug-in Azure Digital Twins vybrat dvojčata, která vás zajímají, a pak je připojit k datům časových řad v cílové tabulce.

Příklad schématu

Tady je příklad schématu, které se může použít k reprezentaci sdílených dat. Příklad se řídí schématem historie dat Azure Data Exploreru pro aktualizace vlastností dvojčete.

TimeStamp SourceTimeStamp TwinId ModelId Name Value RelationshipTarget RelationshipID
2021-02-01 17:24 2021-02-01 17:11 ConfRoomTempSensor dtmi:com:example:TemperatureSensor;1 Teplota 301.0

Vlastnosti digitálního dvojčete se ukládají jako páry klíč-hodnota (name, value). name a value jsou uloženy jako dynamické datové typy.

Schéma také podporuje ukládání vlastností pro relace podle polí relationshipTarget a relationshipID polí. Schéma klíč-hodnota zabraňuje nutnosti vytvořit sloupec pro každou vlastnost dvojčete.

Reprezentace vlastností s více poli

Můžete chtít uložit vlastnost ve schématu s více poli. Tyto vlastnosti jsou reprezentovány uložením objektu JSON jako value ve schématu.

Pokud například chcete reprezentovat vlastnost se třemi poli pro roll, pitch a yaw, objekt hodnoty by vypadal takto: {"roll": 20, "pitch": 15, "yaw": 45}.

Další kroky