Aracılığıyla paylaş


.export to table

Şunlar için geçerlidir: ✅Microsoft FabricAzure 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] totableexternalTableName
[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 sizeLimitaş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 sizeLimitbirden 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=uniformdistribution=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.
  • 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 SQL COPYtarafı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 (veya sizeLimit 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ın distributed . 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 TExternalBlob 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 TPartitionedExternalBlob 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.