Integrera Azure Data Explorer med Azure Data Factory

Kopieringsaktivitet Mata in från fråga
.set-or-append / .set-or-replace / .set / .replace
Mata in från lagring
.ingest
Flow beskrivning ADF hämtar data från källdatalagret, konverterar dem till tabellformat och gör nödvändiga schemamappningsändringar. ADF laddar sedan upp data till Azure-blobar, delar upp dem i segment och laddar sedan ned blobarna för att mata in dem i Azure Data Explorer tabellen.
(Källdatalager ADF > Azure blobar > ADX)
Dessa kommandon kan köra en fråga eller ett kommando och mata in resultatet av .show frågan i en tabell (.show). Det här kommandot matar in data i en tabell genom att "hämta" data från en eller flera molnlagringsartefakter.
Källdatalager som stöds olika alternativ ADLS Gen 2, Azure Blob, SQL (med plugin-programmet sql_request()), Cosmos (med cosmosdb_sql_request-plugin-programmet) och andra datalager som tillhandahåller HTTP- eller Python-API:er. Filesystem, Azure Blob Storage, ADLS Gen 1, ADLS Gen 2
Prestanda Inmatningar köas och hanteras, vilket säkerställer små inmatningar och säkerställer hög tillgänglighet genom att tillhandahålla belastningsutjämning, återförsök och felhantering.
  • Dessa kommandon har inte utformats för dataimport med stora volymer.
  • Fungerar som förväntat och billigare. Men för produktionsscenarier och när trafikfrekvensen och datastorlekarna är stora använder du aktiviteten Kopiera.
Serverbegränsningar
  • Ingen storleksgräns.
  • Maxgräns för tidsgräns: 1 timme per intagen blob.
  • Det finns bara en storleksgräns för frågedelen, som kan hoppas över genom att ange noTruncation=true .
  • Maximal tidsgräns: 1 timme.
  • Ingen storleksgräns.
  • Maximal tidsgräns: 1 timme.

Tips

  • När du kopierar data från ADF till Azure Data Explorer du använda ingest from query kommandona.
  • För stora datamängder ( > 1 GB) använder du aktiviteten Kopiera.

Behörigheter som krävs

I följande tabell visas de behörigheter som krävs för olika steg i integreringen med Azure Data Factory.

Steg Åtgärd Lägsta behörighetsnivå Kommentarer
Skapa en länkad tjänst Databasnavigering databasvisningsprogram
Den inloggade användaren som använder ADF ska ha behörighet att läsa databasmetadata.
Användaren kan ange databasnamnet manuellt.
Testa anslutning databasövervakareeller tabell-ingestor
Tjänstens huvudnamn ska ha behörighet att köra kommandon på .show databasnivå eller inmatning på tabellnivå.
  • TestConnection verifierar anslutningen till klustret och inte till databasen. Det kan lyckas även om databasen inte finns.
  • Tabelladministratörsbehörigheter räcker inte.
Skapa en datauppsättning Tabellnavigering databasövervakare
Den inloggade användaren med ADF måste ha behörighet att köra kommandon på .show databasnivå.
Användaren kan ange tabellnamnet manuellt.
Skapa en datauppsättning elleren kopieringsaktivitet Förhandsgranska data databasvisningsprogram
Tjänstens huvudnamn måste ha behörighet att läsa databasmetadata.
Importera schema databasvisningsprogram
Tjänstens huvudnamn måste ha behörighet att läsa databasmetadata.
När Azure Data Explorer är källan till en tabell-till-tabellkopia importerar ADF schemat automatiskt, även om användaren inte uttryckligen har importerat schemat.
ADX som mottagare Skapa en kolumnmappning efter namn databasövervakare
Tjänstens huvudnamn måste ha behörighet att köra kommandon på .show databasnivå.
  • Alla obligatoriska åtgärder fungerar med tabell-ingestor.
  • Vissa valfria åtgärder kan misslyckas.
  • Skapa en CSV-mappning i tabellen
  • Ta bort mappningen
tabell-ingestor eller databasadministratör
Tjänstens huvudnamn måste ha behörighet att göra ändringar i en tabell.
Mata in data tabell-ingestor eller databasadministratör
Tjänstens huvudnamn måste ha behörighet att göra ändringar i en tabell.
ADX som källa Köra fråga databasvisningsprogram
Tjänstens huvudnamn måste ha behörighet att läsa databasmetadata.
Kusto-kommando Enligt behörighetsnivån för varje kommando.

Prestanda

Om Azure Data Explorer är källan och du använder söknings-, kopierings- eller kommandoaktiviteten som innehåller en fråga där, se bästa praxis för frågor för prestandainformation och ADF-dokumentation för kopieringsaktivitet.

I det här avsnittet behandlas användningen av kopieringsaktivitet Azure Data Explorer är mottagaren. Det uppskattade dataflödet för Azure Data Explorer mottagare är 11–13 MBps. I följande tabell visas de parametrar som påverkar prestanda för Azure Data Explorer mottagare.

Parameter Kommentarer
Geografisk närhet för komponenter Placera alla komponenter i samma region:
  • käll- och mottagare för datalager.
  • ADF Integration Runtime.
  • Ditt Azure Data Explorer kluster.
Se till att minst din Integration Runtime finns i samma region som Azure Data Explorer kluster.
Antal dipu:er 1 virtuell dator för varje 4 DIUs som används av ADF.
Att öka dipu:erna hjälper bara om källan är ett filbaserat arkiv med flera filer. Varje virtuell dator bearbetar sedan en annan fil parallellt. Det innebär att kopiering av en enda stor fil har en längre svarstid än att kopiera flera mindre filer.
Mängden och SKU:n för ditt ADX-kluster Ett stort antal Azure Data Explorer noder ökar bearbetningstiden för inmatning. Användning av dev-SKU:er begränsar prestandan kraftigt
Parallellitet Om du vill kopiera en mycket stor mängd data från en databas partitionera du dina data och använder sedan en ForEach-loop som kopierar varje partition parallellt eller använder masskopiering från databas till Azure Data Explorer mall. Obs! Inställningargrad av parallellitet i aktiviteten Kopiera är inte relevant för Azure Data Explorer.
Komplexitet vid databearbetning Svarstiden varierar beroende på källfilformat, kolumnmappning och komprimering.
Den virtuella dator som kör din Integration Runtime
  • För Azure-kopiering kan virtuella ADF-datorer och dator-SKU:er inte ändras.
  • Kontrollera att den virtuella dator som är värd för din lokala IR är tillräckligt stark för att kunna kopieras till Azure.

Tips och vanliga fallgropar

Övervaka aktivitetsförloppet

  • När du övervakar aktivitetsförloppet kan egenskapen Dataskrivna vara mycket större än dataläsningsegenskapen eftersom Dataläsning beräknas enligt den binära filstorleken, medan skrivna data beräknas enligt minnesstorleken efter att data har deser serialiserats och dekomprimerats.

  • När du övervakar aktivitetsförloppet kan du se att data skrivs till Azure Data Explorer mottagare. När du frågar Azure Data Explorer tabellen ser du att data inte har anlänt. Det beror på att det finns två steg när du kopierar till Azure Data Explorer.

    • Det första steget läser källdata, delar upp dem till 900 MB-segment och laddar upp varje segment till en Azure-blob. Den första fasen visas i förloppsvyn för ADF-aktiviteten.
    • Det andra steget börjar när alla data har laddats upp till Azure Blobs. De Azure Data Explorer motornoderna laddar ned blobarna och matar in data i sink-tabellen. Data visas sedan i din Azure Data Explorer tabell.

Det gick inte att mata in CSV-filer på grund av felaktig undantagsfel

Azure Data Explorer förväntar sig att CSV-filer överensstämmer med RFC 4180. Den förväntar sig:

  • Fält som innehåller tecken som kräver undantag (till exempel " och nya rader) bör börja och sluta med tecknet " utan blanksteg. Alla " tecken i fältet är ryms med hjälp av ett dubbelt " tecken (""). Till exempel är "Hello, "World""" en giltig CSV-fil med en enda post som har en enda kolumn eller ett fält med innehållet Hello, "World".
  • Alla poster i filen måste ha samma antal kolumner och fält.

Azure Data Factory kan använda omsnedstreck (escape). Om du genererar en CSV-fil med ett omdirigeringstecken med Azure Data Factory, kommer inmatningen av filen Azure Data Explorer misslyckas.

Exempel

Följande textvärden: Hello, "World"
ABC DEF
"ABC\D"EF
"ABC DEF

Bör visas i en korrekt CSV-fil enligt följande: "Hello, ""World""
"ABC DEF"
"""ABC DEF"
"""ABC\D""EF"

Med hjälp av standardtecknet för escape (omsnedstreck) fungerar inte följande CSV med Azure Data Explorer: "Hello, "World".
"ABC DEF"
""ABC DEF"
""ABC\D"EF"

Kapslade JSON-objekt

Tänk på följande när du kopierar Azure Data Explorer JSON-fil:

  • Matriser stöds inte.
  • Om din JSON-struktur innehåller objektdatatyper Azure Data Factory objektets underordnade objekt och försöker mappa varje underobjekt till en annan kolumn i Azure Data Explorer tabellen. Om du vill att hela objektobjektet ska mappas till en enda kolumn i Azure Data Explorer:
    • Mata in hela JSON-raden i en enda dynamisk kolumn i Azure Data Explorer.
    • Redigera pipelinedefinitionen manuellt med hjälp Azure Data Factory JSON-redigeraren. I Mappningar
      • Ta bort de flera mappningar som har skapats för varje underobjekt och lägg till en enda mappning som mappar objekttypen i tabellkolumnen.
      • Efter den avslutande hakparentesen lägger du till ett kommatecken följt av:
        "mapComplexValuesToString": true.

Ange AdditionalProperties när du kopierar till Azure Data Explorer

Anteckning

Den här funktionen är för närvarande tillgänglig genom att manuellt redigera JSON-nyttolasten.

Lägg till en enskild rad under avsnittet "mottagare" i kopieringsaktiviteten enligt följande:

"sink": {
    "type": "AzureDataExplorerSink",
    "additionalProperties": "{\"tags\":\"[\\\"drop-by:account_FiscalYearID_2020\\\"]\"}"
},

Det kan vara svårt att komma ifrån värdet. Använd följande kodfragment som referens:

static void Main(string[] args)
{
       Dictionary<string, string> additionalProperties = new Dictionary<string, string>();
       additionalProperties.Add("ignoreFirstRecord", "false");
       additionalProperties.Add("csvMappingReference", "Table1_mapping_1");
       IEnumerable<string> ingestIfNotExists = new List<string> { "Part0001" };
       additionalProperties.Add("ingestIfNotExists", JsonConvert.SerializeObject(ingestIfNotExists));
       IEnumerable<string> tags = new List<string> { "ingest-by:Part0001", "ingest-by:IngestedByTest" };
       additionalProperties.Add("tags", JsonConvert.SerializeObject(tags));
       var additionalPropertiesForPayload = JsonConvert.SerializeObject(additionalProperties);
       Console.WriteLine(additionalPropertiesForPayload);
       Console.ReadLine();
}

Det utskrivna värdet:

{"ignoreFirstRecord":"false","csvMappingReference":"Table1_mapping_1","ingestIfNotExists":"[\"Part0001\"]","tags":"[\"ingest-by:Part0001\",\"ingest-by:IngestedByTest\"]"}

Nästa steg

Azure Data Factory (ADF) är en molnbaserad dataintegreringstjänst som gör att du kan integrera olika datalager och utföra aktiviteter på data. Med ADF kan du skapa datadrivna arbetsflöden för att samordna och automatisera dataförflyttning och datatransformering. Azure Data Explorer är ett av de datalager som stöds i Azure Data Factory.

Azure Data Factory aktiviteter för Azure Data Explorer

Olika integreringar med Azure Data Factory är tillgängliga för Azure Data Explorer användare:

Kopieringsaktivitet

Azure Data Factory aktiviteten Kopiera används för att överföra data mellan datalager. Azure Data Explorer stöds som en källa, där data kopieras från Azure Data Explorer till alla datalager som stöds och en mottagare, där data kopieras från alla datalager som stöds till Azure Data Explorer. Mer information finns i kopiera data till eller från Azure Data Explorer med Azure Data Factory. och en detaljerad genomgång finns i Läsa in data från Azure Data Factory till Azure Data Explorer. Azure Data Explorer stöds av Azure IR (Integration Runtime), används när data kopieras i Azure och IR med egen värd, används när data kopieras från/till datalager som finns lokalt eller i ett nätverk med åtkomstkontroll, till exempel en Azure Virtual Network. Mer information finns i vilken IR som ska användas

Tips

När du använder kopieringsaktiviteten och skapar en länkad tjänst eller en datauppsättning väljer du datalagret Azure Data Explorer (Kusto) och inte det gamla datalagret Kusto.

Sökningsaktivitet

Sökningsaktiviteten används för att köra frågor på Azure Data Explorer. Resultatet av frågan returneras som utdata för sökningsaktiviteten och kan användas i nästa aktivitet i pipelinen enligt beskrivningen i ADF-uppslagsdokumentationen.

Utöver storleksgränsen för svar på 5 000 rader och 2 MB har aktiviteten även en tidsgräns för frågor på 1 timme.

Kommandoaktivitet

Kommandoaktiviteten tillåter körning av Azure Data Explorer kontrollkommandon. Till skillnad från frågor kan kontrollkommandona potentiellt ändra data eller metadata. Vissa kontrollkommandon är avsedda att mata in data i Azure Data Explorer med hjälp av kommandon som eller ) eller kopiera data från Azure Data Explorer till externa datalager med kommandon .ingest.set-or-append som .export . En detaljerad genomgång av kommandoaktiviteten finns i use Azure Data Factory command activity to run Azure Data Explorer control commands. Att använda ett kontrollkommando för att kopiera data kan ibland vara ett snabbare och billigare alternativ än aktiviteten Kopiera. Information om när du ska använda kommandoaktiviteten jämfört med aktiviteten Kopiera finns i välj mellan kopierings- och kommandoaktiviteter när du kopierar data.

Masskopiering från en databasmall

Masskopiering från en databas till en Azure Data Explorer med hjälp av mallen Azure Data Factory är en fördefinierad Azure Data Factory pipeline. Mallen används för att skapa många pipelines per databas eller per tabell för snabbare datakopiering.

Mappa dataflöden

Azure Data Factory dataflöden är visuellt utformade datatransformationer som gör det möjligt för datatekniker att utveckla grafisk datatransformeringslogik utan att skriva kod. Om du vill skapa ett dataflöde och mata in data Azure Data Explorer genom att använda följande metod:

  1. Skapa mappningsdataflödet.
  2. Exportera data till Azure Blob.
  3. Definiera Event Grid eller ADF-kopieringsaktivitet för att mata in data till Azure Data Explorer.

Välj mellan kopiera och Azure Data Explorer kommandoaktiviteter när du kopierar data

Det här avsnittet hjälper dig att välja rätt aktivitet för dina datakopieringsbehov.

När du kopierar data från eller till Azure Data Explorer finns det två tillgängliga alternativ i Azure Data Factory:

  • aktiviteten Kopiera.
  • Azure Data Explorer kommandoaktivitet, som kör ett av de kontrollkommandon som överför data i Azure Data Explorer.

Kopiera data från Azure Data Explorer

Du kan kopiera data Azure Data Explorer med hjälp av kopieringsaktiviteten eller .export kommandot . Kommandot .export kör en fråga och exporterar sedan resultatet av frågan.

I följande tabell finns en jämförelse av aktiviteten Kopiera .export och kommandot för att kopiera data från Azure Data Explorer.

Kopieringsaktivitet .export-kommando
Flow beskrivning ADF kör en fråga på Kusto, bearbetar resultatet och skickar det till måldatalagret.
(ADX ADF-mottagare > för datalager)
ADF skickar ett kontrollkommando till Azure Data Explorer som kör kommandot och skickar .export data direkt till måldatalagret.
(ADX-mottagare för datalager)
Måldatalager som stöds En mängd olika datalager som stöds ADLSv2, Azure Blob, SQL Database
Prestanda Centraliserad
  • Distribuerad (standard), exportera data från flera noder samtidigt
  • Snabbare och KSV (kostnad för sålda varor) effektivt.
Serverbegränsningar Frågegränser kan utökas/inaktiveras. Som standard innehåller ADF-frågor:
  • Storleksgräns på 500 000 poster eller 64 MB.
  • Tidsgräns på 10 minuter.
  • noTruncation inställt på falskt.
Som standard utökar eller inaktiverar du frågegränserna:
  • Storleksbegränsningar är inaktiverade.
  • Tidsgränsen för servern utökas till 1 timme.
  • MaxMemoryConsumptionPerIterator och MaxMemoryConsumptionPerQueryPerNode utökas till max (5 GB, TotalPhysicalMemory/2).

Tips

Om kopieringsmålet är ett av de datalager som stöds av kommandot och om ingen av aktiviteten Kopiera-funktionerna är avgörande för dina .export behov väljer du kommandot .export .

Kopiera data till Azure Data Explorer

Du kan kopiera data till Azure Data Explorer med hjälp av kopieringsaktiviteten eller inmatningskommandona, till exempel att mata in från fråga ( , , , och mata in från .set-or-replace.set.replace).set-or-replace ( .ingest ).

Se följande tabell för en jämförelse av aktiviteten Kopiera och inmatningskommandon för att kopiera data till Azure Data Explorer.