Mengekspor data ke tabel eksternal
Anda dapat mengekspor data dengan menentukan tabel eksternal dan mengekspor data ke sana. Properti tabel ditentukan saat membuat tabel eksternal. Perintah ekspor mereferensikan tabel eksternal berdasarkan nama.
Perintah memerlukan izin admin tabel atau admin database.
Sintaks
.export [async] totableExternalTableName
[with(PropertyName=PropertyValue,...)] <| Query
Argumen
- ExternalTableName: nama tabel eksternal untuk diekspor.
- Kueri: ekspor kueri.
Properti
Properti berikut didukung sebagai bagian dari perintah ekspor ke tabel eksternal:
| Properti | Jenis | Deskripsi | Default |
|---|---|---|---|
sizeLimit |
long |
Batas ukuran dalam byte pada artefak penyimpanan tunggal yang ditulis (sebelum kompresi). Rentang yang diizinkan adalah 100 MB (default) hingga 1 GB. | |
distributed |
bool |
Nonaktifkan/aktifkan ekspor terdistribusi. Pengaturan ke false sama dengan petunjuk distribusi single. |
Defaultnya adalah true. |
parquetRowGroupSize |
int |
Relevan hanya saat format data adalah Parquet. Mengontrol ukuran grup baris dalam file yang diekspor. | Ukuran grup baris default adalah 100.000 catatan. |
concurrency |
Number | Petunjuk sistem berapa banyak partisi yang harus dijalankan secara paralel. Lihat catatan di bawah. | Nilai defaultnya adalah 16. |
spread |
Number | Petunjuk sistem cara mendistribusikan partisi di antara node kluster. Misalnya, jika ada partisi N dan petunjuk spread diatur ke P, partisi N akan diproses oleh P node cluster yang berbeda secara paralel/berurutan tergantung pada petunjuk konkurensi. Lihat catatan di bawah. | Nilai default adalah 1. |
useNativeParquetWriter |
bool |
Gunakan implementasi ekspor baru saat mengekspor ke Parquet Lihat catatan di bawah ini. | Defaultnya adalah false. |
Catatan
hint.spread dan hint.concurrency adalah properti yang digunakan untuk mengurangi/meningkatkan konkurensi operasi tulis. Untuk detail selengkapnya, lihat operator partisi. Properti ini hanya relevan saat mengekspor ke tabel eksternal yang dipartisi oleh partisi string. Secara default, jumlah node yang mengekspor secara bersamaan akan menjadi nilai minimum antara 64 dan jumlah node kluster.
Output
| Parameter output | Jenis | Deskripsi |
|---|---|---|
| ExternalTableName | String | Nama tabel eksternal |
| Jalur | String | Jalur output. |
| NumRecords | String | Jumlah data yang diekspor ke jalur. |
Catatan
Skema output kueri ekspor harus cocok dengan skema tabel eksternal, termasuk semua kolom yang ditentukan oleh partisi. Misalnya, jika tabel dipartisi oleh DateTime, skema output kueri harus memiliki kolom Stempel Waktu yang cocok dengan TimestampColumnName. Nama kolom ini didefinisikan dalam definisi partisi tabel eksternal.
Tidak mungkin untuk mengganti properti tabel eksternal menggunakan perintah ekspor. Misalnya, Anda tidak dapat mengekspor data dalam format Parket ke tabel eksternal yang format datanya CSV.
Jika tabel eksternal dipartisi, artefak yang diekspor akan ditulis ke direktori masing-masing sesuai dengan definisi partisi seperti yang terlihat pada contoh tabel eksternal yang dipartisi.
- Jika nilai partisi adalah null/kosong atau merupakan nilai direktori yang tidak valid, sesuai definisi penyimpanan target, nilai partisi diganti dengan nilai
__DEFAULT_PARTITION__default.
- Jika nilai partisi adalah null/kosong atau merupakan nilai direktori yang tidak valid, sesuai definisi penyimpanan target, nilai partisi diganti dengan nilai
Untuk saran untuk mengatasi kesalahan penyimpanan selama perintah ekspor, lihat kegagalan selama perintah ekspor.
Kolom tabel eksternal dipetakan ke jenis data format target yang sesuai, sesuai dengan aturan pemetaan jenis data.
Ekspor asli Parquet merupakan mekanisme ekspor dengan sumber daya ringan yang lebih berkinerja. Perhatikan bahwa kolom 'datetime' yang diekspor saat ini tidak didukung oleh Synapse SQL 'COPY'.
Jumlah file
Jumlah file yang ditulis per partisi tergantung pada pengaturan:
Jika tabel eksternal hanya mencakup partisi tanggalwaktu, atau tidak ada partisi sama sekali, jumlah file yang ditulis (untuk setiap partisi, jika ada) harus mirip dengan jumlah node dalam kluster (atau lebih, jika
sizeLimittercapai). Saat operasi ekspor didistribusikan, semua node dalam kluster mengekspor secara bersamaan. Untuk menonaktifkan distribusi, sehingga hanya satu node yang menulis, aturdistributedke false. Proses ini akan membuat lebih sedikit file, tetapi akan mengurangi performa ekspor.Jika tabel eksternal menyertakan partisi oleh kolom string, jumlah file yang diekspor harus berupa satu file per partisi (atau lebih, jika
sizeLimittercapai). Semua node masih berpartisipasi dalam ekspor (operasi didistribusikan), tetapi setiap partisi ditetapkan ke node tertentu. Pengaturandistributedke false, hanya akan menyebabkan satu node melakukan ekspor, tetapi perilaku akan tetap sama (satu file ditulis per partisi).
Contoh
Contoh tabel eksternal yang tidak dipartisi
ExternalBlob adalah tabel eksternal yang tidak dipartisi.
.export to table ExternalBlob <| T
| ExternalTableName | Jalur | NumRecords |
|---|---|---|
| ExternalBlob | http://storage1.blob.core.windows.net/externaltable1cont1/1_58017c550b384c0db0fea61a8661333e.csv | 10 |
Contoh tabel eksternal yang dipartisi
PartitionedExternalBlob adalah tabel eksternal, didefinisikan sebagai berikut:
.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 | Jalur | 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 |
Jika perintah dijalankan secara asinkron (dengan menggunakan async kata kunci), output tersedia menggunakan perintah tampilkan detail operasi.