Adatok exportálása külső táblába

Az adatok exportálásához definiáljon egy külső táblát , és exportálja az adatokat. A táblatulajdonságok a külső tábla létrehozásakor vannak megadva. Az exportálási parancs név alapján hivatkozik a külső táblára.

Engedélyek

A parancs futtatásához legalább Table Rendszergazda engedéllyel kell rendelkeznie.

Syntax

.export [async] totableexternalTableName
[with(propertyName=propertyValue [, ...])] <|Lekérdezés

További információ a szintaxis konvenciókról.

Paraméterek

Név Típus Kötelező Leírás
externalTableName string ✔️ Annak a külső táblának a neve, amelybe exportálni szeretné.
propertyName, propertyValue string A választható tulajdonságok vesszővel tagolt listája.
Lekérdezés string ✔️ Az exportálási lekérdezés.

Támogatott tulajdonságok

Az exportálás külső táblába parancs részeként az alábbi tulajdonságok támogatottak.

Tulajdonság Típus Description Alapértelmezett
sizeLimit long Az írás alatt álló egyetlen tárolási összetevő méretkorlátja bájtban (tömörítés előtt). A rendszer megírja a teljes sorméretcsoportot parquetRowGroupSize annak ellenőrzése előtt, hogy ez a sorcsoport elérte-e a méretkorlátot, és új összetevőt kell indítania. Érvényes tartomány: 100 MB (alapértelmezett) és 1 GB között.
distributed bool Az elosztott exportálás letiltása/engedélyezése. A false (hamis) értékre állítás egyenértékű az eloszlásmutatóval single . Az alapértelmezett szint a true.
distribution string Eloszlási tipp (single, per_node, per_shard). További részletekért lásd: Terjesztési beállítások Az alapértelmezett szint a per_node.
distributionKind string Ha a külső táblát sztringpartícióval particionálja, akkor a külső tábla egységes eloszlásra vált. Az érvényes értékek a vagy default.uniform További részletekért lásd: Terjesztési beállítások
concurrency Szám Jelzi a rendszernek, hogy hány partíciót kell párhuzamosan futtatni. További részletekért lásd: Terjesztési beállítások Az alapértelmezett érték a 16.
spread Szám Útmutatást ad a rendszernek a partíciók fürtcsomópontok közötti elosztásához. További részletekért lásd: Terjesztési beállítások Az alapértelmezett érték Min(64, number-of-nodes).
parquetRowGroupSize int Csak akkor releváns, ha az adatformátum Parquet. Az exportált fájlok sorcsoportméretét szabályozza. Ez az érték elsőbbséget élvez a értékkel szemben sizeLimit, ami azt jelenti, hogy egy teljes sorcsoportot exportál a rendszer, mielőtt ellenőrzi, hogy ez a sorcsoport elérte-e a méretkorlátot, és új összetevőt kell indítania. Az alapértelmezett sorcsoportméret 100 000 rekord.

Terjesztési beállítások

Az exportálás külső táblába művelet eloszlása azt jelzi, hogy hány csomópont és szál ír egyidejűleg a tárolóba. Az alapértelmezett elosztás a külső tábla particionálásától függ:

Külső tábla particionálása Alapértelmezett elosztás
A külső tábla nincs particionálva vagy csak oszlop szerint datetime particionálva Az exportálás elosztott per_node – a fürt összes csomópontja egyidejűleg exportál. Minden csomópont az adott csomóponthoz rendelt adatokat írja. A csomópont által exportált fájlok száma csak akkor lesz nagyobb, ha az adott csomópontból származó adatok mérete meghaladja sizeLimita értéket.
A külső táblát egy sztringoszlop particionálja Az exportálandó adatokat a rendszer áthelyezi a csomópontok között, így minden csomópont megírja a partícióértékek egy részét. Egyetlen partíciót mindig egyetlen csomópont ír. A partíciónként írt fájlok száma csak akkor lehet nagyobb, mint egy, ha az adatok száma meghaladja sizeLimita értéket. Ha a külső tábla több sztringpartíciót is tartalmaz, akkor a rendszer az első partíció alapján particionálja az adatokat a csomópont között. Ezért javasoljuk, hogy elsőként a legegyensúlyosabb eloszlású partíciót határozza meg.

Az alapértelmezett terjesztési beállítások módosítása

Az alapértelmezett terjesztési beállítások módosítása a következő esetekben lehet hasznos:

Használati eset Leírás Ajánlás
Az exportált fájlok számának csökkentése Az exportálás túl sok kis fájlt hoz létre, és azt szeretné, hogy kisebb számú nagyobb fájlt hozzon létre. A vagy distribution==singledistributedfalse (mindkettő egyenértékű) a parancstulajdonságokban. Az exportálást csak egyetlen szál hajtja végre. Ennek hátránya, hogy az exportálási művelet lassabb lehet, mivel az egyidejűség jelentősen csökken.
Az exportálás időtartamának csökkentése Az exportálási művelet egyidejűségének növelése az időtartam csökkentése érdekében. Állítsa be distribution=per_shard a parancstulajdonságok között. Ez azt jelenti, hogy az írási műveletek egyidejűsége adatszilánkonként történik, nem csomópontonként. Ez csak akkor lényeges, ha olyan külső táblába exportál, amelyet nem sztringpartíció particionál. Ez túl nagy terhelést okozhat a tárterületen, ami szabályozáshoz vezethet. Lásd: Tárolási hibák.
Sztringpartícióval particionált külső táblák exportálási időtartamának csökkentése Ha a partíciók nem egyenletesen vannak elosztva a csomópontok között, az exportálás hosszabb időt vehet igénybe. Ha például egyetlen partíció sokkal nagyobb, mint a többi, az exportálási munka nagy részét az adott partícióhoz rendelt egyetlen csomópont végzi, míg más csomópontok többnyire tétlenek lesznek. Lásd: Terjesztési beállítások. Több beállítás is módosítható:
* Ha egynél több sztringpartíció van, először határozza meg azt, amelyik a legjobb eloszlást tartalmazza.

* A parancs tulajdonságaiban adja meg distributionKind=uniform . Ez a beállítás letiltja a sztringparticionált külső táblák alapértelmezett terjesztési beállításait. Az exportálás elosztással per-node fog futni, és minden csomópont exportálja a csomóponthoz rendelt adatokat. Egyetlen partíciót több csomópont is írhat, és ennek megfelelően nő a fájlok száma. Az egyidejűség további növeléséhez állítsa be distributionKindper_shard=uniformdistribution=a beállítást a legmagasabb egyidejűség érdekében (akár több írott fájl árán)

* Ha a lassú exportálás oka nem kiugró érték az adatokban, csökkentse az időtartamot az egyidejűség növelésével, a particionálási beállítások módosítása nélkül. Használja a hint.spread és hint.concurrency a tulajdonságot, amely meghatározza a particionálás egyidejűségét. Lásd: partíciókezelő. Alapértelmezés szerint az egyidejűleg exportált csomópontok száma (a spread) a 64 és a fürtcsomópontok száma közötti minimális érték lesz. A csomópontok számánál nagyobb számra való beállítás spread növeli az egyes csomópontok egyidejűségét (a maximális érték spread 64).

Hitelesítés és engedélyezés

Ha külső táblába szeretne exportálni, írási engedélyeket kell beállítania. További információ: Írási engedélyek az Azure Storage külső táblájához vagy SQL Server külső táblához.

Kimenet

Kimeneti paraméter Típus Description
ExternalTableName string A külső tábla neve.
Elérési út string Kimeneti elérési út.
NumRecords string Az elérési útra exportált rekordok száma.

Jegyzetek

  • Az exportálási lekérdezés kimeneti sémájának meg kell egyeznie a külső tábla sémájának, beleértve a partíciók által definiált összes oszlopot is. Ha például a táblát DateTime particionálja, a lekérdezés kimeneti sémájának a TimestampColumnName oszlopnak megfelelő Timestamp oszlopmal kell rendelkeznie. Ez az oszlopnév a külső táblaparticionálási definícióban van definiálva.

  • A külső táblatulajdonságokat nem lehet felülbírálni az exportálási paranccsal. Parquet formátumú adatokat például nem exportálhat olyan külső táblába, amelynek adatformátuma CSV.

  • Ha a külső tábla particionált, az exportált összetevőket a rendszer a particionált külső tábla példájában látható partíciódefinícióknak megfelelően írja a megfelelő könyvtárakba.

    • Ha egy partíció értéke null/üres, vagy érvénytelen könyvtárérték, a céltároló definíciói szerint a partíció értékét a rendszer a következő alapértelmezett értékre cseréli __DEFAULT_PARTITION__: .
  • Az exportálási parancsok tárolási hibáinak elhárítására vonatkozó javaslatokért tekintse meg az exportálási parancsok hibáit ismertető cikket.

  • A külső táblaoszlopok megfelelő célformátumú adattípusokra vannak leképezve az adattípusok leképezési szabályainak megfelelően.

  • A parquet natív exportálása egy hatékonyabb, erőforrás-könnyű exportálási mechanizmus. Az exportált "datetime" oszlopokat a Synapse SQL "COPY" jelenleg nem támogatja.

Fájlok száma

A partíciónként írt fájlok száma az exportálási művelet terjesztési beállításaitól függ:

  • Ha a külső tábla csak datetime partíciókat tartalmaz, vagy egyáltalán nem tartalmaz partíciókat, az írott fájlok számának (minden partícióhoz, ha létezik) hasonlónak kell lennie a fürt csomópontjainak számához (vagy több, ha sizeLimit elérik). Az exportálási művelet elosztásakor a fürt összes csomópontja egyidejűleg exportálódik. Ha le szeretné tiltani a terjesztést, hogy csak egyetlen csomópont írja be az írásokat, állítsa false (hamis) értékre distributed . Ez a folyamat kevesebb fájlt hoz létre, de csökkenti az exportálási teljesítményt.

  • Ha a külső tábla tartalmaz egy sztringoszlop szerinti partíciót, az exportált fájlok számának partíciónként egyetlen fájlnak kell lennie (vagy többnek, ha sizeLimit el van érve). Az exportálásban továbbra is minden csomópont részt vesz (a művelet elosztott), de minden partíció egy adott csomóponthoz van rendelve. A false (hamis) értékre állítás distributed esetén csak egyetlen csomópont hajtja végre az exportálást, de a viselkedés változatlan marad (partíciónként egyetlen fájl).

Példák

Nem particionált külső tábla – példa

Az ExternalBlob egy nem particionált külső tábla.

.export to table ExternalBlob <| T
ExternalTableName Elérési út NumRecords
ExternalBlob http://storage1.blob.core.windows.net/externaltable1cont1/1_58017c550b384c0db0fea61a8661333e.csv 10

Példa particionált külső táblázatra

A PartitionedExternalBlob egy külső tábla, amely a következőképpen van definiálva:

.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'
)
.export to table PartitionedExternalBlob <| T
ExternalTableName Elérési út 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

Ha a parancsot aszinkron módon hajtják végre (a async kulcsszó használatával), a kimenet a show operation details paranccsal érhető el.