Share via


Konfigurera en SQL Server-källfas i förhandsversionen av Azure IoT Data Processor

Viktigt!

Förhandsversion av Azure IoT Operations – aktiverad av Azure Arc finns för närvarande i FÖRHANDSVERSION. Du bör inte använda den här förhandsgranskningsprogramvaran i produktionsmiljöer.

Juridiska villkor för Azure-funktioner i betaversion, förhandsversion eller som av någon annan anledning inte har gjorts allmänt tillgängliga ännu finns i kompletterande användningsvillkor för Microsoft Azure-förhandsversioner.

Källfasen är den första och nödvändiga fasen i en Azure IoT Data Processor Preview-pipeline. Källsteget hämtar data till databearbetningspipelinen och förbereder dem för vidare bearbetning. Med SQL Server-källsteget kan du läsa data från en Microsoft SQL Server-databas med ett användardefinierat intervall.

I källfasen definierar du:

  • Anslut ionsinformation för SQL Server.
  • Det intervall med vilket SQL Server-databasen ska frågas. Fasen väntar på ett resultat innan intervalltimern återställs.
  • En partitioneringskonfiguration baserat på dina specifika databehandlingskrav.

Förutsättningar

  • En fungerande instans av dataprocessorn distribueras.
  • En SQL Server-databas med alla nödvändiga rådata är i drift och kan nås.

Förbereda SQL Server-databasen

Innan du kan läsa från SQL Server-databasen måste du bevilja åtkomst till databasen från pipelinen. Du kan använda Username/Password, Managed identityeller Service principal för att autentisera pipelinen till databasen. Fördelen med att använda en hanterad identitet är att du inte behöver hantera livscykeln för tjänstens huvudnamn eller lösenordsinformationen. Den hanterade identiteten hanteras automatiskt av Azure och är kopplad till livscykeln för den resurs som den har tilldelats.

Så här skapar du ett huvudnamn för tjänsten med en klienthemlighet:

  1. Använd följande Azure CLI-kommando för att skapa ett huvudnamn för tjänsten.

    az ad sp create-for-rbac --name <YOUR_SP_NAME> 
    
  2. Utdata från det här kommandot innehåller en appId, displayName, passwordoch tenant. Anteckna de här värdena som ska användas när du konfigurerar åtkomsten till din molnresurs, till exempel Microsoft Fabric, skapar en hemlighet och konfigurerar ett pipelinemål:

    {
        "appId": "<app-id>",
        "displayName": "<name>",
        "password": "<client-secret>",
        "tenant": "<tenant-id>"
    }
    

Om du vill bevilja åtkomst till huvudnamns-ID:t i SQL Server-databasen kör du följande kommando i databasen:

CREATE USER processor FROM EXTERNAL PROVIDER WITH OBJECT_ID=<principalId>;

Kommentar

Om du vill köra föregående kommando måste du använda Etttra-ID:t som anges som administratör i SQL Server.

För att källfasen ska kunna ansluta till SQL Server-databasen behöver den åtkomst till en hemlighet som innehåller autentiseringsinformationen. Så här skapar du en hemlighet:

  1. Använd följande kommando för att lägga till en hemlighet i ditt Azure Key Vault som innehåller klienthemligheten som du antecknade när du skapade tjänstens huvudnamn:

    az keyvault secret set --vault-name <your-key-vault-name> --name AccessADXSecret --value <client-secret>
    
  2. Lägg till den hemliga referensen till kubernetes-klustret genom att följa stegen i Hantera hemligheter för din Azure IoT Operations-distribution.

Konfigurera SQL Server-källan

Så här konfigurerar du SQL Server-källan:

  • Ange information om SQL Server-databasen. Den här konfigurationen innehåller servernamnet och en fråga för att hämta data.
  • Ange autentiseringsmetoden. För närvarande begränsad till användarnamn/lösenordsbaserad eller tjänsthuvudnamnsbaserad autentisering.

I följande tabell beskrivs konfigurationsparametrarna för SQL Server-källan:

Fält Type Beskrivning Obligatoriskt Standardvärde Exempel
Name String Ett kund synligt namn för källfasen. Obligatoriskt NA erp-database
beskrivning String En kund synlig beskrivning av källsteget. Valfritt NA Enterprise database
Servervärd String Url:en som ska användas för att ansluta till servern. Obligatoriskt NA https://contoso.com/some/url/path
Serverport Integer Portnumret som ska anslutas till på servern. Obligatoriskt 1433 1433
Autentisering Authentication type Autentiseringsmetoden för att ansluta till servern. En av: None, Username/Password, Managed identityeller Service principal. Valfritt NA Username/Password
Användarnamn/lösenord > användarnamn String Användarnamnet för autentisering med användarnamn/lösenord Ja NA myuser
Användarnamn/lösenordshemlighet > String Referens till lösenordet som lagras i Azure Key Vault. Ja Ja AKV_USERNAME_PASSWORD
Klient-ID för tjänstens huvudnamn > String Klientorganisations-ID för tjänstens huvudnamn. Ja NA <Tenant ID>
Klient-ID för tjänstens huvudnamn > String Klient-ID för tjänstens huvudnamn. Ja NA <Client ID>
Tjänstens huvudnamnshemlighet > String Referens till klienthemligheten för tjänstens huvudnamn som lagras i Azure Key Vault. Ja NA AKV_SERVICE_PRINCIPAL
Databas String Namnet på DEN SQL Server-databas som du vill fråga efter. Obligatoriskt NA erp_db
Datafråga String Frågan som ska köras mot databasen. Obligatoriskt NA SELECT * FROM your_table WHERE column_name = foo
Frågeintervall Varaktighet Strängrepresentation av tiden innan nästa API-anrop. Obligatoriskt 10s 24h
Dataformat Format Dataformat för inkommande data Obligatoriskt NA {"type": "json"}
Partitionering Partitionering Partitioneringskonfiguration för källsteget. Obligatoriskt NA Se partitionering

Mer information om hemligheter finns i Hantera hemligheter för distributionen av Azure IoT Operations Preview.

Kommentar

Tidsgräns för begäranden om 30 sekunder om det inte finns något svar från SQL-servern.

Välj dataformat

I en databehandlingspipeline anger formatfältet i källsteget hur inkommande data ska deserialiseras. Som standard använder raw databehandlingspipelinen formatet som innebär att den inte konverterar inkommande data. Om du vill använda många dataprocessorfunktioner, till exempel Filter eller Enrich faser i en pipeline, måste du deserialisera dina data i indatafasen. Du kan välja att deserialisera inkommande data från JSON, jsonStream, MessagePack, CBOR, CSVeller Protobuf format till ett läsbart meddelande för dataprocessorn för att kunna använda den fullständiga databehandlingsfunktionen.

I följande tabeller beskrivs de olika konfigurationsalternativen för deserialisering:

Fält beskrivning Obligatoriskt Standardvärde Värde
Dataformat Typ av dataformat. Ja Raw Raw JSON jsonStream MessagePack CBOR CSV Protobuf

Fältet Data Format är obligatoriskt och dess värde avgör de andra obligatoriska fälten.

Om du vill deserialisera CSV-meddelanden måste du också ange följande fält:

Fält beskrivning Obligatoriskt Värde Exempel
Header Om CSV-data innehåller en rubrikrad. Ja Yes No No
Name Namnet på kolumnen i CSV Ja - temp, asset
Sökväg Jq-sökvägen i meddelandet där kolumninformationen läggs till. Nej - Jq-standardsökvägen är kolumnnamnet
Datatyp Datatypen för data i kolumnen och hur de representeras i databehandlingspipelinen. Nej String, Float, Integer, , , BooleanBytes Standard: String

Om du vill deserialisera Protobuf-meddelanden måste du också ange följande fält:

Fält beskrivning Obligatoriskt Värde Exempel
Deskriptor Den base64-kodade beskrivningen för protobuf-definitionen. Ja - Zhf...
Meddelande Namnet på den meddelandetyp som används för att formatera data. Ja - pipeline
Paket Namnet på paketet i beskrivningen där typen definieras. Ja - schedulerv1

Kommentar

Dataprocessorn stöder endast en meddelandetyp i varje .proto-fil .

Konfigurera partitionering

Partitionering i en pipeline delar in inkommande data i separata partitioner. Partitionering möjliggör dataparallellitet i pipelinen, vilket kan förbättra dataflödet och minska svarstiden. Partitioneringsstrategier påverkar hur data bearbetas i de andra stegen i pipelinen. Det senaste kända värdesteget och aggregeringssteget fungerar till exempel på varje logisk partition.

Om du vill partitionera dina data anger du en partitioneringsstrategi och antalet partitioner som ska användas:

Fält beskrivning Obligatoriskt Standardvärde Exempel
Partitionstyp Vilken typ av partitionering som ska användas: Partition ID eller partition Key Obligatoriskt ID ID
Partitionsuttryck JQ-uttrycket som ska användas i det inkommande meddelandet för att beräkna partitionen ID eller partitionenKey Obligatoriskt 0 .payload.header
Antal partitioner Antalet partitioner i en dataprocessorpipeline. Obligatoriskt 1 1

Dataprocessorn lägger till metadata i det inkommande meddelandet. Se Översikt över dataprocessorns meddelandestruktur för att förstå hur du korrekt anger partitioneringsuttrycket som körs på det inkommande meddelandet. Som standard är partitioneringsuttrycket inställt 0 på med partitionstypen som ID att skicka alla inkommande data till en enda partition.

Rekommendationer och mer information finns i Vad är partitionering?.