Exportera data till en extern tabell
Gäller för: ✅Microsoft Fabric✅Azure 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
] to
table
externalTableName
[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__
.
- 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
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 SQLCOPY
.
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, omsizeLimit
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 dudistributed
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 indistributed
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.