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
] to
table
externalTableName
[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 sizeLimit a é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 sizeLimit a é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 ==single distributed false (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 distributionKind per_shard =uniform distribution =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__
: .
- 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
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ékredistributed
. 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ásdistributed
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.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: