.export do tabulky
Platí pro: ✅Microsoft Fabric✅Azure Data Explorer
Data můžete exportovat definováním externí tabulky a exportem dat do ní. Vlastnosti tabulky se zadají při vytváření externí tabulky. Příkaz pro export odkazuje na externí tabulku podle názvu.
Oprávnění
Ke spuštění tohoto příkazu musíte mít alespoň oprávnění správce tabulky.
Syntaxe
.export
[async
] to
table
externalTableName
[with
(
propertyName=
propertyValue [,
...]] )
<|
dotaz
Přečtěte si další informace o konvencích syntaxe.
Parametry
Název | Type | Požadováno | Popis |
---|---|---|---|
externalTableName | string |
✔️ | Název externí tabulky, do které chcete exportovat. |
propertyName, propertyValue | string |
Čárkami oddělený seznam volitelných vlastností. | |
query | string |
✔️ | Dotaz exportu. |
Podporované vlastnosti
Následující vlastnosti jsou podporovány jako součást příkazu exportu do externí tabulky.
Vlastnost | Type | Popis | Výchozí |
---|---|---|---|
sizeLimit |
long |
Omezení velikosti v bajtech jednoho artefaktu úložiště zapsaného před kompresí. Před kontrolou, jestli tato skupina řádků dosáhne limitu velikosti, se zapíše celá skupina řádků parquetRowGroupSize a má spustit nový artefakt. Platný rozsah: 100 MB (výchozí) až 1 GB. |
|
distributed |
bool |
Zakažte nebo povolte distribuovaný export. Nastavení na hodnotu false je ekvivalentem nápovědy k single distribuci. |
Výchozí hodnota je true . |
distribution |
string |
Distribuční tip (single , per_node , per_shard ). Další podrobnosti najdete v nastavení distribuce. |
Výchozí hodnota je per_node . |
distributionKind |
string |
Volitelně se přepne na jednotnou distribuci, když je externí tabulka rozdělená podle oddílu řetězce. Platné hodnoty jsou uniform nebo default . Další podrobnosti najdete v nastavení distribuce. |
|
concurrency |
Počet | Napovídá systému, kolik oddílů se má paralelně spouštět. Další podrobnosti najdete v nastavení distribuce. | Výchozí hodnota je 16. |
spread |
Počet | Tipuje systém, jak distribuovat oddíly mezi uzly. Další podrobnosti najdete v nastavení distribuce. | Výchozí hodnota je Min(64, number-of-nodes) . |
parquetRowGroupSize |
int |
Relevantní pouze v případech, kdy je formát dat Parquet. Určuje velikost skupiny řádků v exportovaných souborech. Tato hodnota má přednost před sizeLimit , což znamená, že se před kontrolou, jestli tato skupina řádků dosáhne limitu velikosti, a měla by spustit nový artefakt. |
Výchozí velikost skupiny řádků je 100 000 záznamů. |
Nastavení distribuce
Distribuce exportu do externí tabulky označuje počet uzlů a vláken, které se zapisují do úložiště současně. Výchozí distribuce závisí na dělení externí tabulky:
Dělení externí tabulky | Výchozí distribuce |
---|---|
Externí tabulka není rozdělená na oddíly ani není rozdělená podle datetime sloupce. |
Export je distribuovaný per_node – všechny uzly se exportují souběžně. Každý uzel zapíše data přiřazená uzlu. Počet souborů exportovaných uzlem je větší než jeden, pouze pokud velikost dat z tohoto uzlu překročí sizeLimit . |
Externí tabulka je rozdělená podle sloupce řetězců. | Data, která se mají exportovat, se přesunou mezi uzly, aby každý uzel zapisuje podmnožinu hodnot oddílů. Jeden oddíl je vždy napsán jedním uzlem. Počet zapsaných souborů na oddíl by měl být větší než jeden, pouze pokud data překročí sizeLimit . Pokud externí tabulka obsahuje několik oddílů řetězců, data se rozdělí mezi uzel na základě prvního oddílu. Proto doporučujeme definovat oddíl s nejjednotnější distribucí jako první. |
Změna výchozího nastavení distribuce
Změna výchozího nastavení distribuce může být užitečná v následujících případech:
Případ použití | Popis | Doporučení |
---|---|---|
Snížení počtu exportovaných souborů | Export vytváří příliš mnoho malých souborů a chcete, aby se vytvořil menší počet větších souborů. | Nastavení distribution =single nebo distributed =false (oba jsou ekvivalentní) ve vlastnostech příkazu. Export provádí pouze jedno vlákno. Nevýhodou je, že operace exportu může být pomalejší, protože souběžnost je mnohem nižší. |
Zkrácení doby trvání exportu | Zvýšení souběžnosti operace exportu, aby se zkrátila její doba trvání. | Nastavte distribution =per_shard ve vlastnostech příkazu. To znamená, že souběžnost operací zápisu je na horizontální oddíl dat místo na uzel. To je relevantní jenom při exportu do externí tabulky, která není rozdělená podle oddílu řetězce. To může způsobit příliš velké zatížení úložiště, což může způsobit omezování. Podívejte se na selhání úložiště. |
Zkrácení doby trvání exportu externích tabulek rozdělených podle oddílu řetězce | Pokud oddíly nejsou rovnoměrně rozdělené mezi uzly, může spuštění exportu trvat delší dobu. Pokud je jeden oddíl mnohem větší než druhý, uzel přiřazený k houževnu většinu práce exportu, zatímco ostatní uzly zůstanou většinou nečinné. Další informace naleznete v tématu Nastavení distribuce. | Můžete změnit několik nastavení: * Pokud existuje více než jeden řetězcový oddíl, definujte ho s nejlepším rozdělením jako první. * Nastavte distributionKind =uniform ve vlastnostech příkazu. Toto nastavení zakáže výchozí nastavení distribuce pro externí tabulky dělené řetězcem. Export běží s distribucí per-node a každý uzel exportuje data přiřazená uzlu. Jeden oddíl může zapsat několik uzlů a počet souborů se odpovídajícím způsobem zvyšuje. Pokud chcete zvýšit souběžnost ještě více, nastavte distributionKind =uniform spolu s distribution =per_shard nejvyšší souběžností (za cenu potenciálně mnoha dalších zapsaných souborů).* Pokud příčinou pomalého exportu nejsou v datech odlehlé hodnoty, zkraťte dobu trvání zvýšením souběžnosti beze změny nastavení dělení. Použijte vlastnosti hint.spread hint.concurrency a určete souběžnost dělení. Viz operátor oddílu. Ve výchozím nastavení je minimální hodnota mezi 64 a počtem uzlů, které se exportují souběžně (spread ). Nastavení spread na vyšší počet než počet uzlů zvyšuje souběžnost na každém uzlu (maximální hodnota je spread 64). |
Ověřování a autorizace
Abyste mohli exportovat do externí tabulky, musíte nastavit oprávnění k zápisu. Další informace najdete v tématu Oprávnění k zápisu pro externí tabulku Azure Storage nebo externí tabulku SQL Serveru.
Výstup
Výstupní parametr | Type | Popis |
---|---|---|
ExternalTableName | string |
Název externí tabulky. |
Cesta | string |
Výstupní cesta |
NumRecords | string |
Počet záznamů exportovaných do cesty |
Notes
Výstupní schéma exportu dotazu musí odpovídat schématu externí tabulky, včetně všech sloupců definovaných oddíly. Pokud je například tabulka rozdělena podle dateTime, musí výstupní schéma dotazu obsahovat sloupec časového razítka odpovídající timestampColumnName. Tento název sloupce je definován v definici dělení externí tabulky.
Vlastnosti externí tabulky není možné přepsat pomocí příkazu exportu. Nemůžete například exportovat data ve formátu Parquet do externí tabulky, jejíž datový formát je CSV.
Pokud je externí tabulka rozdělená na oddíly, exportované artefakty se zapisují do příslušných adresářů podle definic oddílů. Příklad příkladu rozdělené externí tabulky.
- Pokud je hodnota oddílu null/prázdná nebo je neplatnou hodnotou adresáře, nahradí se podle definic cílového úložiště hodnota oddílu výchozí hodnotou
__DEFAULT_PARTITION__
.
- Pokud je hodnota oddílu null/prázdná nebo je neplatnou hodnotou adresáře, nahradí se podle definic cílového úložiště hodnota oddílu výchozí hodnotou
Návrhy, jak překonat chyby úložiště během příkazů pro export, najdete v tématu selhání při exportních příkazech.
Sloupce externí tabulky se mapují na vhodné datové typy cílového formátu podle pravidel mapování datových typů.
Nativní export Parquet je výkonnější mechanismus exportu světla prostředků. Exportovaný sloupec
datetime
v současné době nepodporujeCOPY
Synapse SQL .
Počet souborů
Počet zapsaných souborů na oddíl závisí na nastavení distribuce operace exportu:
Pokud externí tabulka obsahuje pouze
datetime
oddíly nebo vůbec žádné oddíly, počet souborů zapsaných pro každý oddíl, který existuje, by měl být podobný počtu uzlů (nebo více, pokudsizeLimit
je dosaženo). Při distribuci operace exportu se všechny uzly exportují souběžně. Pokud chcete zakázat distribuci, aby zápisy udělal jenom jeden uzel, nastavtedistributed
na hodnotu false. Tento proces vytváří méně souborů, ale snižuje výkon exportu.Pokud externí tabulka obsahuje oddíl podle sloupce řetězce, měl by být počet exportovaných souborů jedním souborem na oddíl (nebo více, pokud
sizeLimit
je dosaženo). Všechny uzly se stále účastní exportu (operace je distribuovaná), ale každý oddíl je přiřazen ke konkrétnímu uzlu. Nastavenídistributed
na false, způsobí, že export provede jenom jeden uzel, ale chování zůstane stejné (jeden soubor zapsaný na oddíl).
Příklady
Příklad nedělené externí tabulky
Následující příklad exportuje data z tabulky T
do tabulky ExternalBlob
.
ExternalBlob
je nedělaná externí tabulka.
.export to table ExternalBlob <| T
výstupní
ExternalTableName | Cesta | NumRecords |
---|---|---|
ExternalBlob | http://storage1.blob.core.windows.net/externaltable1cont1/1_58017c550b384c0db0fea61a8661333e.csv | 10 |
Příklad rozdělené externí tabulky
Následující příklad nejprve vytvoří dělenou externí tabulku PartitionedExternalBlob
se zadaným umístěním úložiště objektů blob. Data jsou uložená ve formátu CSV s formátem cesty, který data uspořádá podle jména zákazníka a data.
.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'
)
Potom exportuje data z tabulky T
do PartitionedExternalBlob
externí tabulky.
.export to table PartitionedExternalBlob <| T
výstupní
ExternalTableName | Cesta | 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 |
Pokud je příkaz spuštěn asynchronně pomocí klíčového slova async
, výstup je k dispozici pomocí zobrazit podrobnosti operace příkaz.
Související obsah
- průběžného exportu dat
- Přehled příkazů pro správu
- externí tabulky
- .export do sql
- .export do úložiště