Dela via


Exportera data till en extern tabell

Gäller för: ✅Microsoft FabricAzure Data Explorer

Du kan exportera data genom att definiera en extern tabell och exportera data till den. Tabellegenskaperna anges när att skapa den externa tabellen. Exportkommandot refererar till den externa tabellen efter namn.

Behörigheter

Du måste ha minst tabelladministratör behörigheter för att köra det här kommandot.

Syntax

.export [async] totableexternalTableName
[with(propertyName=propertyValue [, ...])] <|fråga

Läs mer om syntaxkonventioner.

Parametrar

Namn Typ Krävs Beskrivning
externalTableName string ✔️ Namnet på den externa tabell som ska exporteras till.
propertyName, propertyValue string En kommaavgränsad lista över valfria egenskaper.
fråga string ✔️ Exportfrågan.

Egenskaper som stöds

Följande egenskaper stöds som en del av kommandot exportera till extern tabell.

Egenskap Typ Beskrivning Standard
sizeLimit long Storleksgränsen i byte för en enda lagringsartefakt som skrivits före komprimering. En fullständig radgrupp med storlek parquetRowGroupSize skrivs innan du kontrollerar om den här radgruppen når storleksgränsen och bör starta en ny artefakt. Giltigt intervall: 100 MB (standard) till 1 GB.
distributed bool Inaktivera eller aktivera distribuerad export. Inställningen false motsvarar single distributionstips. Standardvärdet är true.
distribution string Distributionstips (single, per_node, per_shard). Mer information finns i Distributionsinställningar Standardvärdet är per_node.
distributionKind string Du kan också växla till en enhetlig distribution när den externa tabellen partitioneras av strängpartition. Giltiga värden är uniform eller default. Mer information finns i Distributionsinställningar
concurrency nummer Antyder systemet hur många partitioner som ska köras parallellt. Mer information finns i Distributionsinställningar Standardvärdet är 16.
spread nummer Tipsar systemet om hur du distribuerar partitionerna mellan noder. Mer information finns i Distributionsinställningar Standardvärdet är Min(64, number-of-nodes).
parquetRowGroupSize int Relevant endast när dataformatet är Parquet. Styr radgruppens storlek i de exporterade filerna. Det här värdet har företräde framför sizeLimit, vilket innebär att en fullständig radgrupp exporteras innan du kontrollerar om den här radgruppen når storleksgränsen och bör starta en ny artefakt. Standardstorleken för radgrupper är 100 000 poster.

Distributionsinställningar

Fördelningen av en export till en extern tabellåtgärd anger antalet noder och trådar som skrivs till lagring samtidigt. Standardfördelningen beror på den externa tabellpartitioneringen:

Partitionering av extern tabell Standarddistribution
Den externa tabellen är inte partitionerad eller partitionerad av endast datetime kolumn Exporten distribueras per_node – alla noder exporteras samtidigt. Varje nod skriver de data som tilldelats den noden. Antalet filer som exporteras av en nod är större än en, bara om storleken på data från den noden överskrider sizeLimit.
Extern tabell partitioneras av en strängkolumn Data som ska exporteras flyttas mellan noderna, så att varje nod skriver en delmängd av partitionsvärdena. En enskild partition skrivs alltid av en enda nod. Antalet filer som skrivs per partition bör bara vara större än en om data överskrider sizeLimit. Om den externa tabellen innehåller flera strängpartitioner partitioneras data mellan noden baserat på den första partitionen. Därför rekommenderar vi att du definierar partitionen med den mest enhetliga fördelningen som den första.

Ändra standarddistributionsinställningarna

Det kan vara användbart att ändra standarddistributionsinställningarna i följande fall:

Användningsfall Beskrivning Rekommendation
Minska antalet exporterade filer Export skapar för många små filer och du vill att det ska skapa ett mindre antal större filer. Ange distribution=single eller distributed=false (båda är likvärdiga) i kommandoegenskaperna. Endast en enda tråd utför exporten. Nackdelen med detta är att exportåtgärden kan vara långsammare eftersom samtidigheten minskar avsevärt.
Minska exportvaraktigheten Öka samtidigheten för exportåtgärden för att minska dess varaktighet. Ange distribution=per_shard i kommandoegenskaperna. Detta innebär att samtidigheten för skrivåtgärderna är per datashard, i stället för per nod. Detta är bara relevant när du exporterar till en extern tabell som inte partitioneras av strängpartition. Detta kan skapa för mycket belastning på lagringen, vilket kan leda till begränsning. Se Lagringsfel.
Minska exportvaraktigheten för externa tabeller som partitioneras av en strängpartition Om partitionerna inte är jämnt fördelade mellan noderna kan det ta längre tid att köra exporten. Om en partition är mycket större än den andra fungerar den nod som tilldelats den partitionen mest av exportarbetet, medan de andra noderna förblir mestadels inaktiva. Mer information finns i Distributionsinställningar. Det finns flera inställningar som du kan ändra:
* Om det finns mer än en strängpartition definierar du den med bästa distribution först.

* Ange distributionKind=uniform i kommandoegenskaperna. Den här inställningen inaktiverar standarddistributionsinställningarna för strängpartitionerade externa tabeller. Exportera körs med per-node distribution och varje nod exporterar de data som tilldelats noden. En enskild partition kan skrivas av flera noder och antalet filer ökar i enlighet med detta. Om du vill öka samtidigheten ytterligare anger du distributionKind=uniform tillsammans med distribution=per_shard för högsta samtidighet (på bekostnad av potentiellt många fler skrivna filer)

* Om orsaken till långsam export inte är extremvärden i data kan du minska varaktigheten genom att öka samtidigheten utan att ändra partitioneringsinställningarna. Använd egenskaperna hint.spread och hint.concurrency, som avgör partitioneringens samtidighet. Se partitionsoperatorn. Som standard är antalet noder som exporterar samtidigt (spread) det minsta värdet mellan 64 och antalet noder. Om spread anges till ett högre antal än antalet noder ökar samtidigheten på varje nod (maxvärdet för spread är 64).

Autentisering och auktorisering

För att kunna exportera till en extern tabell måste du konfigurera skrivbehörigheter. Mer information finns i Skrivbehörigheter för extern Azure Storage-tabell eller extern SQL Server-tabell.

Utdata

Utdataparameter Typ Beskrivning
ExternalTableName string Namnet på den externa tabellen.
Stig string Utdatasökväg.
NumRecords string Antal poster som exporterats till sökvägen.

Anteckningar

  • Utdataschemat för exportfrågan måste matcha schemat för den externa tabellen, inklusive alla kolumner som definieras av partitionerna. Om tabellen till exempel partitioneras av DateTimemåste frågeutdataschemat ha en tidsstämpelkolumn som matchar TimestampColumnName. Det här kolumnnamnet definieras i definitionen för extern tabellpartitionering.

  • Det går inte att åsidosätta egenskaperna för den externa tabellen med hjälp av exportkommandot. Du kan till exempel inte exportera data i Parquet-format till en extern tabell vars dataformat är CSV.

  • Om den externa tabellen partitioneras skrivs exporterade artefakter till respektive katalog enligt partitionsdefinitionerna. Ett exempel finns i partitionerad extern tabellexempel.

    • Om ett partitionsvärde är null/tomt eller är ett ogiltigt katalogvärde ersätts partitionsvärdet enligt definitionerna för mållagringen med standardvärdet __DEFAULT_PARTITION__.
  • Förslag för att lösa lagringsfel under exportkommandon finns i fel under exportkommandon.

  • Externa tabellkolumner mappas till lämpliga målformatdatatyper enligt datatyper som mappar regler.

  • Parquet intern export är en mer högpresterande resurs lätt exportmekanism. En exporterad datetime kolumn stöds för närvarande inte av Synapse SQL COPY.

Antal filer

Antalet filer som skrivs per partition beror på distributionsinställningar exportåtgärden:

  • Om den externa tabellen endast innehåller datetime partitioner, eller inga partitioner alls, bör antalet filer som skrivs för varje partition som finns likna antalet noder (eller mer, om sizeLimit nås). När exportåtgärden distribueras exporteras alla noder samtidigt. Om du vill inaktivera distributionen, så att endast en enda nod gör skrivningar, anger du distributed till false. Den här processen skapar färre filer, men minskar exportprestandan.

  • Om den externa tabellen innehåller en partition med en strängkolumn ska antalet exporterade filer vara en enda fil per partition (eller mer, om sizeLimit nås). Alla noder deltar fortfarande i exporten (åtgärden distribueras), men varje partition tilldelas till en specifik nod. Om du ställer in distributed till false gör det bara att en enskild nod exporteras, men beteendet förblir detsamma (en enda fil skrivs per partition).

Exempel

Exempel på icke-partitionerad extern tabell

I följande exempel exporteras data från tabellen T till tabellen ExternalBlob. ExternalBlob är en extern tabell som inte är partitionerad.

.export to table ExternalBlob <| T

utdata

ExternalTableName Stig NumRecords
ExternalBlob http://storage1.blob.core.windows.net/externaltable1cont1/1_58017c550b384c0db0fea61a8661333e.csv 10

Exempel på partitionerad extern tabell

I följande exempel skapas först en partitionerad extern tabell, PartitionedExternalBlob med en angiven bloblagringsplats. Data lagras i CSV-format med ett sökvägsformat som organiserar data efter kundnamn och datum.

.create external table PartitionedExternalBlob (Timestamp:datetime, CustomerName:string) 
kind=blob
partition by (CustomerName:string=CustomerName, Date:datetime=startofday(Timestamp))   
pathformat = ("CustomerName=" CustomerName "/" datetime_pattern("yyyy/MM/dd", Date))   
dataformat=csv
( 
   h@'http://storageaccount.blob.core.windows.net/container1;secretKey'
)

Sedan exporteras data från tabellen T till den externa PartitionedExternalBlob-tabellen.

.export to table PartitionedExternalBlob <| T

utdata

ExternalTableName Stig NumRecords
ExternalBlob http://storageaccount.blob.core.windows.net/container1/CustomerName=customer1/2019/01/01/fa36f35c-c064-414d-b8e2-e75cf157ec35_1_58017c550b384c0db0fea61a8661333e.csv 10
ExternalBlob http://storageaccount.blob.core.windows.net/container1/CustomerName=customer2/2019/01/01/fa36f35c-c064-414d-b8e2-e75cf157ec35_2_b785beec2c004d93b7cd531208424dc9.csv 10

Om kommandot körs asynkront med hjälp av nyckelordet async är utdata tillgängliga med hjälp av visa åtgärdsinformation kommando.