Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Schakelen tussen services met behulp van de vervolgkeuzelijst Versie . Meer informatie over navigatie.
Van toepassing op: ✅ Microsoft Fabric ✅ Azure Data Explorer
Wanneer uw brongegevens eenvoudige en snelle transformaties omvat, moet u ze upstream uitvoeren in de pijplijn met behulp van een eventstream. Deze benadering werkt echter mogelijk niet goed voor andere transformaties die complex zijn of waarvoor speciale functionaliteit nodig is.
In deze handleiding leer je hoe je:
In het voorbeeld in deze zelfstudie ziet u hoe u updatebeleid voor gegevensroutering gebruikt om complexe transformaties uit te voeren om gegevens tijdens opnametijd te verrijken, op te schonen en te transformeren. Zie voor een lijst met andere veelvoorkomende gebruiksvoorbeelden Veelvoorkomende gebruiksvoorbeelden voor updatebeleid van tabellen.
Vereiste voorwaarden
- Een Microsoft-account of een Microsoft Entra-gebruikersidentiteit. Er is geen Azure-abonnement vereist.
- Een Azure Data Explorer-cluster en -database. Een cluster en database maken
Stap 1: tabellen maken en beleidsregels bijwerken
De volgende stappen helpen u bij het maken van een brontabel, transformatiefuncties, doeltabellen en updatebeleid. De zelfstudie laat zien hoe u tabelupdatebeleid gebruikt om complexe transformaties uit te voeren en de resultaten op te slaan in een of meer doeltabellen. In het voorbeeld wordt één brontabel met de naam Raw_Table en drie doeltabellen met de naam Device_Telemetry, Device_Alarms en Error_Log gebruikt.
Voer de volgende opdracht uit om een tabel met de naam Raw_Table te maken.
.create table Raw_Table (RawData: dynamic)In de brontabel worden de opgenomen gegevens opgeslagen. De tabel heeft één kolom met de naam RawData van het type dynamisch. Met het dynamische type worden de onbewerkte gegevens opgeslagen zoals dat is, zonder schema. Zie de opdracht .create table voor meer informatie.
Voer de volgende opdracht uit om functies met de naam Get_Telemetry, Get_Alarms en Log_Error te maken.
.execute database script <| .create-or-alter function Get_Telemetry() { Raw_Table | where todynamic(RawData).MessageType == 'Telemetry' | extend Timestamp = unixtime_seconds_todatetime(tolong(RawData.Timestamp)), DeviceId = tostring(RawData.DeviceId), DeviceType = tostring(RawData.DeviceType), SensorName = tostring(RawData.SensorName), SensorValue = toreal(RawData.SensorValue), SensorUnit = tostring(RawData.SensorUnit) | project-away RawData } .create-or-alter function Get_Alarms() { Raw_Table | where RawData.MessageType == 'Alarms' | extend Timestamp = unixtime_seconds_todatetime(tolong(RawData.Timestamp)), DeviceId = tostring(RawData.DeviceId), DeviceType = tostring(RawData.DeviceTpe) , AlarmType = tostring(RawData.AlarmType) | project-away RawData } .create-or-alter function Log_Error() { Raw_Table | where RawData.MessageType !in ('Telemetry', 'Alarms') | extend TimeStamp = datetime(now), ErrorType = 'Unknown MessageType' | project TimeStamp, RawData, ErrorType }Wanneer u een updatebeleid maakt, kunt u een inlinescript opgeven voor uitvoering. De transformatielogica echter inkapselen in een functie. Het gebruik van een functie verbetert het onderhoud van code. Wanneer er nieuwe gegevens binnenkomen, wordt de functie uitgevoerd om de gegevens te transformeren. De functie kan opnieuw worden gebruikt in meerdere updatebeleidsregels. Zie de opdracht .create function voor meer informatie.
Voer de volgende opdracht uit om de doeltabellen te maken.
.execute database script <| .create table Device_Telemetry (Timestamp: datetime, DeviceId: string, DeviceType: string, SensorName: string, SensorValue: real, SensorUnit: string) .set-or-append Device_Alarms <| Get_Alarms | take 0 .set-or-append Error_Log <| Log_Error | take 0De doeltabel moet hetzelfde schema hebben als de uitvoer van de transformatiefunctie. U kunt doeltabellen op de volgende manieren maken:
- Gebruik de
.create tableopdracht en geef handmatig het schema op zoals wordt gedemonstreerd met het maken van de Device_Telemetry tabel. Deze benadering kan echter foutgevoelig en tijdrovend zijn. - Gebruik de
.set-or-appendopdracht als u al een functie hebt gemaakt om de gegevens te transformeren. Met deze methode maakt u een nieuwe tabel met hetzelfde schema als de uitvoer van de functie, doortake 0ervoor te zorgen dat de functie alleen het schema retourneert. Zie de opdracht .set-or-append voor meer informatie.
- Gebruik de
Voer de volgende opdracht uit om het updatebeleid voor de doeltabellen te maken.
.execute database script <| .alter table Device_Telemetry policy update "[{\"IsEnabled\":true,\"Source\":\"Raw_Table\",\"Query\":\"Get_Telemetry\",\"IsTransactional\":false,\"PropagateIngestionProperties\":true,\"ManagedIdentity\":null}]" .alter table Device_Alarms policy update "[{\"IsEnabled\":true,\"Source\":\"Raw_Table\",\"Query\":\"Get_Alarms\",\"IsTransactional\":false,\"PropagateIngestionProperties\":true,\"ManagedIdentity\":null}]" .alter table Error_Log policy update "[{\"IsEnabled\":true,\"Source\":\"Raw_Table\",\"Query\":\"Log_Error\",\"IsTransactional\":false,\"PropagateIngestionProperties\":true,\"ManagedIdentity\":null}]"Gebruik de
.alter table policy updateopdracht om de brontabel, de transformatiefunctie en de doeltabel te koppelen. Maak het updatebeleid voor de doeltabel en geef de brontabel en transformatiefunctie op. Zie de opdracht .alter table policy update voor meer informatie.
Stap 2: voorbeeldgegevens opnemen
Als u het updatebeleid wilt testen, neemt u voorbeeldgegevens op in de brontabel met behulp van de .set-or-append opdracht. Zie Gegevens opnemen uit een query voor meer informatie.
.set-or-append Raw_Table <|
let Raw_Stream = datatable(RawData: dynamic)
[
dynamic({"TimeStamp": 1691757932, "DeviceId": "Sensor01", "MessageType": "Telemetry", "DeviceType": "Laminator", "SensorName": "Temperature", "SensorValue": 78.3, "SensorUnit": "Celcius"}),
dynamic({"TimeStamp": 1691757932, "DeviceId": "Sensor01", "MessageType": "Alarms", "DeviceType": "Laminator", "AlarmType": "Temperature threshold breached"}),
dynamic({"TimeStamp": 1691757932, "DeviceId": "Sensor01", "MessageType": "Foo", "ErrorType": "Unknown"})
];
Raw_Stream
Stap 3: de resultaten controleren
Voer een query uit om te controleren of de gegevens zijn getransformeerd en doorgestuurd naar de doeltabellen om de resultaten te valideren. In het volgende voorbeeld combineert de union operator de bron en de resultaten van de doeltabellen in één resultatenset.
Raw_Table | summarize Rows=count() by TableName = "Raw_Table"
| union (Device_Telemetry | summarize Rows=count() by TableName = "Device_Telemetry")
| union (Device_Alarms | summarize Rows=count() by TableName = "Device_Alarms")
| union (Error_Log | summarize Rows=count() by TableName = "Error_Log")
| sort by Rows desc
Uitvoer
U ziet nu de volgende uitvoer waarbij de Raw_Table drie rijen heeft en de doeltabellen één rij hebben.
| TableName | Rows |
|---|---|
| Raw_Table | 3 |
| Foutenlogboek | 1 |
| Apparaat_Alarmen | 1 |
| Apparaattelemetrie | 1 |
Stap 4 - Hulpbronnen opschonen
Voer de volgende opdracht uit in uw database om de tabellen en functies op te schonen die in deze zelfstudie zijn gemaakt.
.execute database script <|
.drop table Raw_Table
.drop table Device_Telemetry
.drop table Device_Alarms
.drop table Error_Log
.drop function Get_Telemetry
.drop function Get_Alarms
.drop function Log_Error