.export to table
Şunlar için geçerlidir: ✅Microsoft Fabric✅Azure Veri Gezgini
Dış tablo tanımlayıp verileri bu tabloya aktararak verileri dışarı aktarabilirsiniz. Dış tablo oluşturulurken tablo özellikleri belirtilir. Dışarı aktarma komutu dış tabloya ada göre başvurur.
İzinler
Bu komutu çalıştırmak için en az Tablo Yöneticisi izinlerine sahip olmanız gerekir.
Sözdizimi
.export
[async
] to
table
externalTableName
[with
(
propertyName=
propertyValue [,
...]] )
<|
sorgu
Söz dizimi kuralları hakkında daha fazla bilgi edinin.
Parametreler
Ad | Tür | Zorunlu | Açıklama |
---|---|---|---|
externalTableName | string |
✔️ | Dışarı aktarıldığı dış tablonun adı. |
propertyName, propertyValue | string |
İsteğe bağlı özelliklerin virgülle ayrılmış listesi. | |
query | string |
✔️ | Dışarı aktarma sorgusu. |
Desteklenen özellikler
Aşağıdaki özellikler dış tabloya dışarı aktarma komutunun bir parçası olarak desteklenir.
Özellik | Tür | Açıklama | Varsayılan |
---|---|---|---|
sizeLimit |
long |
Sıkıştırmadan önce yazılmış tek bir depolama yapıtı bayt cinsinden boyut sınırı. Bu satır grubunun boyut sınırına ulaşıp ulaşmadığı ve yeni bir yapıt başlatması gerekip gerekmediği denetlenmeden önce boyut parquetRowGroupSize tam satır grubu yazılır. Geçerli aralık: 100 MB (varsayılan) - 1 GB. |
|
distributed |
bool |
Dağıtılmış dışarı aktarmayı devre dışı bırakın veya etkinleştirin. false ayarı, dağıtım ipucuna single eşdeğerdir. |
true |
distribution |
string |
Dağıtım ipucu (single , per_node , per_shard ). Dağıtım ayarları'nda diğer ayrıntılara bakın |
per_node |
distributionKind |
string |
İsteğe bağlı olarak, dış tablo dize bölümüne göre bölümlendiğinde tekdüzen dağıtıma geçer. Geçerli değerler uniform veya default şeklindedir. Dağıtım ayarları'nda diğer ayrıntılara bakın |
|
concurrency |
Numara | Sisteme kaç bölümün paralel olarak çalıştırılmasını sağlar. Dağıtım ayarları'nda diğer ayrıntılara bakın | 16 |
spread |
Numara | Sisteme, bölümlerin düğümler arasında nasıl dağıtılır ipuçları sağlar. Dağıtım ayarları'nda diğer ayrıntılara bakın | Min(64, number-of-nodes) |
parquetRowGroupSize |
int |
Yalnızca veri biçimi Parquet olduğunda geçerlidir. Dışarı aktarılan dosyalardaki satır grubu boyutunu denetler. Bu değer sizeLimit 'den önceliklidir. Bu, bu satır grubunun boyut sınırına ulaşıp ulaşmadığını ve yeni bir yapıt başlatması gerekip gerekmediğini denetlemeden önce tam bir satır grubunun dışarı aktarılacağı anlamına gelir. |
100,000 |
Dağıtım ayarları
Dış tablo işlemine dışarı aktarma işleminin dağılımı, eşzamanlı olarak depolamaya yazan düğüm ve iş parçacığı sayısını gösterir. Varsayılan dağıtım, dış tablo bölümlemesine bağlıdır:
Dış tablo bölümleme | Varsayılan dağıtım |
---|---|
Dış tablo bölümlenmez veya yalnızca sütuna göre datetime bölümlenmez |
Dışarı aktarma dağıtılır per_node - tüm düğümler eşzamanlı olarak dışarı aktarılıyor. Her düğüm, bu düğüme atanan verileri yazar. Bir düğüm tarafından dışarı aktarılan dosya sayısı, yalnızca bu düğümdeki verilerin boyutu sizeLimit aşarsa birden fazla olur. |
Dış tablo bir dize sütunu tarafından bölümlenmiştir | Dışarı aktaracak veriler düğümler arasında taşınır; böylece her düğüm bölüm değerlerinin bir alt kümesini yazar. Tek bir bölüm her zaman tek bir düğüm tarafından yazılır. Bölüm başına yazılan dosya sayısı yalnızca veriler değerini aşarsa sizeLimit birden fazla olmalıdır. Dış tablo birkaç dize bölümü içeriyorsa, veriler ilk bölüme göre düğüm arasında bölümlenmiş olur. Bu nedenle, en tekdüzen dağıtıma sahip bölümü ilk dağıtım olarak tanımlamanız önerilir. |
Varsayılan dağıtım ayarlarını değiştirme
Aşağıdaki durumlarda varsayılan dağıtım ayarlarını değiştirmek yararlı olabilir:
Kullanım örneği | Açıklama | Öneri |
---|---|---|
Dışarı aktarılan dosya sayısını azaltma | Dışarı aktarma işlemi çok fazla küçük dosya oluşturuyor ve daha az sayıda daha büyük dosya oluşturmasını istiyorsunuz. | Komut özelliklerinde veyadistribution =single (her ikisi de eşdeğerdir) ayarlayın.distributed =false Dışarı aktarma işlemini yalnızca tek bir iş parçacığı gerçekleştirir. Bunun dezavantajı, eşzamanlılık çok azaldıkça dışarı aktarma işleminin daha yavaş olmasıdır. |
Dışarı aktarma süresini azaltma | Süresini azaltmak için dışarı aktarma işleminin eşzamanlılığını artırma. | Komut özelliklerinde ayarlayın distribution =per_shard . Bunun yapılması, yazma işlemlerinin eşzamanlılığının düğüm başına değil veri parçası başına olduğu anlamına gelir. Bu yalnızca dize bölümüyle bölümlenmemiş bir dış tabloya dışarı aktarılırken geçerlidir. Bu, depolamada çok fazla yük oluşturarak azaltmaya neden olabilir. Bkz. Depolama hataları. |
Dize bölümü tarafından bölümlenmiş dış tabloların dışarı aktarma süresini azaltma | Bölümler düğümler arasında düzgün dağıtılamıyorsa dışarı aktarma işleminin çalıştırılması daha uzun sürebilir. Bir bölüm diğerlerinden çok daha büyükse, bu bölüme atanan düğüm dışarı aktarma işinin çoğunu gerçekleştirirken, diğer düğümler çoğunlukla boşta kalır. Daha fazla bilgi için bkz. Dağıtım ayarları. | Değiştirebileceğiniz birkaç ayar vardır: * Birden fazla dize bölümü varsa, önce en iyi dağıtıma sahip olanı tanımlayın. * Komut özelliklerinde ayarlayın distributionKind =uniform . Bu ayar, dize bölümlenmiş dış tablolar için varsayılan dağıtım ayarlarını devre dışı bırakır. Dışarı aktarma, per-node dağıtımıyla çalışır ve her düğüm düğüme atanan verileri dışarı aktarır. Tek bir bölüm birkaç düğüm tarafından yazılabilir ve dosya sayısı buna göre artar. Eşzamanlılığı daha da artırmak için en yüksek eşzamanlılık için birlikte ayarlayın distributionKind =uniform distribution =per_shard (yazılmış olabilecek çok daha fazla dosya karşılığında)* Yavaş dışarı aktarmanın nedeni verilerdeki aykırı değerler değilse, bölümleme ayarlarını değiştirmeden eşzamanlılığı artırarak süreyi azaltın. Bölümlemenin hint.spread eşzamanlılığını belirleyen ve hint.concurrency özelliklerini kullanın. Bkz. bölüm işleci. Varsayılan olarak, eşzamanlı olarak dışarı aktaran düğüm sayısı (spread ), 64 ile düğüm sayısı arasındaki en düşük değerdir. Düğüm sayısından daha yüksek bir sayıya ayarlandığında spread her düğümde eşzamanlılık artar (için spread en yüksek değer 64'tür). |
Kimlik doğrulaması ve yetkilendirme
Dış tabloya dışarı aktarmak için yazma izinlerini ayarlamanız gerekir. Daha fazla bilgi için bkz. Azure Depolama dış tablosu veya SQL Server dış tablosu için yazma izinleri.
Çıktı
Çıkış parametresi | Tür | Açıklama |
---|---|---|
ExternalTableName | string |
Dış tablonun adı. |
Yol | string |
Çıkış yolu. |
NumRecords | string |
Yola dışarı aktarılan kayıt sayısı. |
Notlar
Dışarı aktarma sorgusu çıktı şeması, bölümler tarafından tanımlanan tüm sütunlar da dahil olmak üzere dış tablonun şemasıyla eşleşmelidir. Örneğin, tablo DateTime tarafından bölümlenmişse, sorgu çıktı şemasında TimestampColumnName ile eşleşen bir Zaman Damgası sütunu olmalıdır. Bu sütun adı dış tablo bölümleme tanımında tanımlanır.
Dışarı aktarma komutunu kullanarak dış tablo özelliklerini geçersiz kılmak mümkün değildir. Örneğin, Parquet biçimindeki verileri, veri biçimi CSV olan bir dış tabloya aktaramazsınız.
Dış tablo bölümlenmişse, dışarı aktarılan yapıtlar bölüm tanımlarına göre ilgili dizinlerine yazılır. Örnek için bkz. bölümlenmiş dış tablo örneği
. - Bölüm değeri null/boş veya geçersiz bir dizin değeriyse, hedef depolamanın tanımlarına göre bölüm değeri varsayılan değeriyle
__DEFAULT_PARTITION__
değiştirilir.
- Bölüm değeri null/boş veya geçersiz bir dizin değeriyse, hedef depolamanın tanımlarına göre bölüm değeri varsayılan değeriyle
Dışarı aktarma komutları sırasında depolama hatalarının üstesinden gelme önerileri için bkz . dışarı aktarma komutları sırasındaki hatalar.
Dış tablo sütunları, veri türleri eşleme kurallarına göre uygun hedef biçim veri türlerine eşlenir.
Parquet yerel dışarı aktarma daha performanslı, kaynak ışığı dışarı aktarma mekanizmasıdır. Dışarı aktarılan
datetime
sütunu şu anda Synapse SQLCOPY
tarafından desteklenmiyor.
Dosya sayısı
Bölüm başına yazılan dosyaların sayısı, dışarı aktarma işleminin dağıtım ayarlarına bağlıdır:
Dış tablo yalnızca
datetime
bölüm içeriyorsa veya hiç bölüm içermiyorsa, var olan her bölüm için yazılan dosya sayısı düğüm sayısına (veyasizeLimit
ulaşılırsa daha fazla) benzer olmalıdır. Dışarı aktarma işlemi dağıtıldığında, tüm düğümler eşzamanlı olarak dışarı aktarılır. Dağıtımı devre dışı bırakmak, böylece yazmaları yalnızca tek bir düğüm yapar, false olarak ayarlayındistributed
. Bu işlem daha az dosya oluşturur, ancak dışarı aktarma performansını azaltır.Dış tablo dize sütununa göre bir bölüm içeriyorsa, dışarı aktarılan dosyaların sayısı bölüm başına tek bir dosya (veya ulaşılırsa
sizeLimit
daha fazla) olmalıdır. Tüm düğümler dışarı aktarma işlemine katılmaya devam eder (işlem dağıtılır), ancak her bölüm belirli bir düğüme atanır.distributed
false olarak ayarlanması, dışarı aktarma işlemini yalnızca tek bir düğümün gerçekleştirmesine neden olur, ancak davranış aynı kalır (bölüm başına yazılan tek bir dosya).
Örnekler
Bölümlenmemiş dış tablo örneği
Aşağıdaki örnek, verileri tablo T
ExternalBlob
tablosuna aktarır.
ExternalBlob
bölümlenmemiş bir dış tablodur.
.export to table ExternalBlob <| T
çıkış
ExternalTableName | Yol | NumRecords |
---|---|---|
ExternalBlob | http://storage1.blob.core.windows.net/externaltable1cont1/1_58017c550b384c0db0fea61a8661333e.csv | 10 |
Bölümlenmiş dış tablo örneği
Aşağıdaki örnek önce belirtilen blob depolama konumuna sahip PartitionedExternalBlob
bölümlenmiş bir dış tablo oluşturur. Veriler, verileri müşteri adına ve tarihine göre düzenleyen bir yol biçimiyle CSV biçiminde depolanır.
.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'
)
Ardından verileri tablo T
PartitionedExternalBlob
dış tabloya aktarır.
.export to table PartitionedExternalBlob <| T
çıkış
ExternalTableName | Yol | 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 |
Komut async
anahtar sözcüğü kullanılarak zaman uyumsuz olarak yürütülürse, işlem ayrıntılarını göster komutu kullanılarak çıktı kullanılabilir.
İlgili içerik
- Sürekli veri dışarı aktarma
- Yönetimi komutlara genel bakış
- Dış tabloları
- SQL'a .export
- .export to storage