depolamaya veri aktarimi

Sürüm açılan listesini kullanarak hizmetler arasında geçiş yapın. Gezinti hakkında daha fazla bilgi edinin.
Şunlar için geçerlidir: ✅ Microsoft Fabric ✅ Azure Veri Gezgini

Bir sorgu yürütür ve ilk sonuç kümesini bir depolama bağlantı dizesi tarafından belirtilen bir dış bulut depolama alanına yazar.

İzinler

Bu komutu çalıştırmak için en az Veritabanı Görüntüleyicisi izinlerine sahip olmanız gerekir.

Sözdizimi

.export[] [asynccompressed] toOutputDataFormat( StorageConnectionString [, ...] ) [with(PropertyName=PropertyValue [, ...] ] )<|Sorgu

Söz dizimi kuralları hakkında daha fazla bilgi edinin.

Parametreler

Ad Tür Zorunlu Açıklama
Asenkron string Belirtilirse, komut zaman uyumsuz modda çalışır. Bkz. zaman uyumsuz mod.
sıkıştırılmış bool Belirtilirse, çıktı depolama yapıtlarıdesteklenen compressionTypeözelliği tarafından belirtilen biçimde sıkıştırılır.
OutputDataFormat string ✔️ komutu tarafından yazılan depolama yapıtlarının veri biçimi. Desteklenen değerler şunlardır: csv, tsv, jsonve parquet.
StorageConnectionString string Verilerin hangi depolama alanına yazılacağını belirten bir veya daha fazla depolama bağlantı dizesi. Ölçeklenebilir yazma işlemleri için birden fazla depolama bağlantısı dizesi belirtilebilir. Bu tür her bağlantı dizesi, depolama alanına yazarken kullanılacak kimlik bilgilerini belirtmelidir. Örneğin, Azure Blob Depolama yazarken kimlik bilgileri depolama hesabı anahtarı veya blobları okuma, yazma ve listeleme izinlerine sahip bir paylaşılan erişim anahtarı (SAS) olabilir.
DFS uç noktasını kullanarak verileri CSV dosyalarına aktardığınızda, veriler DFS tarafından yönetilen özel uç nokta üzerinden gider.
Verileri parquet dosyalarına aktardığınızda, veriler blob tarafından yönetilen özel uç nokta üzerinden gider.
PropertyName, PropertyValue string Anahtar-değer özellik çiftlerinin virgülle ayrılmış listesi. Desteklenen özelliklere bakın.

Not

Verileri, veritabanıyla aynı bölgede bulunan depolama alanına dışarı aktarmanızı kesinlikle öneririz. Bu, başka bölgelerdeki başka bir bulut hizmetine aktarılabilmesi için dışarı aktarılan verileri içerir. Yazma işlemleri yerel olarak yapılırken, okumalar uzaktan gerçekleşebilir.

Desteklenen özellikler

Özellik Tür Açıklama
includeHeaders string Çıkış için csv/tsv sütun üst bilgilerinin oluşturulmasını denetler. Bunlardan biri none (varsayılan; üst bilgi satırı belirtilmemiş), all (her depolama yapıtına bir üst bilgi satırı yayma) veya firstFile (yalnızca ilk depolama yapıtına üst bilgi satırı yayma) olabilir.
fileExtension string Depolama yapıtının "uzantı" bölümü (örneğin, .csv veya .tsv). Sıkıştırma kullanılıyorsa, .gz bu da eklenir.
namePrefix string Oluşturulan her depolama yapıtı adına eklenecek ön ek. Belirtilmezse rastgele bir ön ek kullanılır.
encoding string Metin kodlaması. Olası değerler şunlardır: UTF8NoBOM (varsayılan) veya UTF8BOM.
compressionType string Kullanılacak sıkıştırma türü. Parquet olmayan dosyalar için yalnızca gzip izin verilir. Parquet dosyaları için olası değerler gzip, snappy, lz4_raw, brotlive zstdiçerir. Varsayılan gzip değeridir.
distribution string Dağıtım ipucu (single, per_node, per_shard). Değer eşitse single, depolamaya tek bir iş parçacığı yazar. Aksi takdirde, sorguyu paralel olarak yürüten tüm düğümlerden yazmaları dışarı aktarın. Bkz . eklenti işlecini değerlendirme. varsayılan değeridir per_shard.
persistDetails bool truekomutu sonuçlarını kalıcı hale döndürür (bkz. async bayrağı). Zaman uyumsuz çalıştırmalarda true varsayılan değerdir, ancak çağıranın sonuçları gerektirmemesi durumunda kapatılabilir. false Zaman uyumlu yürütmelerde varsayılan olarak varsayılandır, ancak açılabilir.
sizeLimit long Sıkıştırmadan önce yazılmış tek bir depolama yapıtı bayt cinsinden boyut sınırı. Geçerli aralık: 100 MB (varsayılan) - 4 GB.
parquetRowGroupSize int Yalnızca veri biçimi Parquet olduğunda geçerlidir. Dışarı aktarılan dosyalardaki satır grubu boyutunu denetler. Varsayılan satır grubu boyutu 100.000 kayıttır.
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. Varsayılanı doğrudur
parquetDatetimePrecision string datetime değerleri Parquet'e aktarırken kullanılacak duyarlık. Olası değerler milisaniye ve mikrosaniyedir. Varsayılan değer milisaniyedir.

Kimlik doğrulaması ve yetkilendirme

Kimlik doğrulama yöntemi sağlanan bağlantı dizesi temel alır ve gerekli izinler kimlik doğrulama yöntemine bağlı olarak değişir.

Aşağıdaki tabloda desteklenen kimlik doğrulama yöntemleri ve verileri depolama türüne göre dış depolama alanına aktarmak için gereken izinler listelenmektedir.

Kimlik doğrulama yöntemi Azure Blob Depolama / Data Lake Storage 2. Nesil Data Lake Storage 1. Nesil
Kim -liğe bürünme Depolama Blobu Veri Katılımcısı Katılımcı
Paylaşılan Erişim (SAS) belirteci Write Write
Microsoft Entra erişim belirteci Ek izin gerekmez Ek izin gerekmez
Depolama hesabı erişim anahtarı Ek izin gerekmez Ek izin gerekmez
Kimlik doğrulama yöntemi Azure Blob Depolama / Data Lake Storage 2. Nesil Data Lake Storage 1. Nesil
Kim -liğe bürünme Depolama Blobu Veri Katılımcısı Katılımcı
Yönetilen Kimlik Depolama Blobu Veri Katılımcısı Katılımcı
Paylaşılan Erişim (SAS) belirteci Write Write
Microsoft Entra erişim belirteci Ek izin gerekmez Ek izin gerekmez
Depolama hesabı erişim anahtarı Ek izin gerekmez Ek izin gerekmez

Döndürülenler

Komutlar, oluşturulan depolama yapıtlarını açıklayan bir tablo döndürür. Her kayıt tek bir yapıtı açıklar ve yapıtın depolama yolunu ve kaç kaydı barındırdığı içerir.

Yol NumRecords
http://storage1.blob.core.windows.net/containerName/export_1_d08afcae2f044c1092b279412dcb571b.csv 10
http://storage1.blob.core.windows.net/containerName/export_2_454c0f1359e24795b6529da8a0101330.csv 15

Zaman uyumsuz mod

async Bayrak belirtilirse, komut zaman uyumsuz modda yürütülür. Bu modda, komut bir işlem kimliğiyle hemen döndürür ve veri dışarı aktarma işlemi tamamlanıncaya kadar arka planda devam eder. Komut tarafından döndürülen işlem kimliği, ilerleme durumunu ve sonuç olarak sonuçlarını aşağıdaki komutlar aracılığıyla izlemek için kullanılabilir:

Örneğin, başarıyla tamamlandıktan sonra aşağıdakini kullanarak sonuçları alabilirsiniz:

.show operation f008dc1e-2710-47d8-8d34-0d562f5f8615 details

Örnekler

Bu örnekte Kusto sorguyu çalıştırır ve ardından sorgu tarafından üretilen ilk kayıt kümesini sıkıştırmadan önce 1 GB'a kadar sıkıştırılmış bir veya daha fazla CSV bloba aktarır. Sütun adı etiketleri her blob için ilk satır olarak eklenir.

.export
  async compressed
  to csv (
    h@"https://storage1.blob.core.windows.net/containerName;secretKey",
    h@"https://storage1.blob.core.windows.net/containerName2;secretKey"
  ) with (
    sizeLimit=1000000000,
    namePrefix="export",
    includeHeaders="all",
    encoding="UTF8NoBOM"
  )
  <| 
  Logs | where id == "1234" 

Dışarı aktarma komutları sırasında hatalar

Dışarı aktarma komutları yürütme sırasında geçici olarak başarısız olabilir. Sürekli dışarı aktarma komutu otomatik olarak yeniden denenir. Normal dışarı aktarma komutları (depolama alanına aktar, dış tabloya aktar) hiçbir yeniden deneme gerçekleştirmez.

  • Dışarı aktarma komutu başarısız olduğunda, depolama alanına önceden yazılmış yapıtlar silinmez. Bu yapıtlar depolamada kalır. Komut başarısız olursa, bazı yapıtlar yazılmış olsa bile dışarı aktarma işleminin tamamlanmamış olduğunu varsayalım.
  • Hem komutun tamamlanmasını hem de başarıyla tamamlandıktan sonra dışarı aktarılan yapıtları izlemenin en iyi yolu ve .show operations komutlarını .show operation details kullanmaktır.

Depolama hataları

Varsayılan olarak, dışarı aktarma komutları, depolama alanında çok sayıda eşzamanlı yazma olacak şekilde dağıtılır. Dağıtım düzeyi dışarı aktarma komutunun türüne bağlıdır:

  • Normal .export komutun varsayılan dağıtımı olan değeri, per_shardyazma işlemini eşzamanlı olarak depolama alanına aktaracak verileri içeren tüm kapsamlar anlamına gelir.

  • Dış tablo komutlarına dışarı aktarma için varsayılan dağıtım, per_nodeeşzamanlılığın düğüm sayısı olduğu anlamına gelir.

Kapsam/düğüm sayısı büyük olduğunda, bu durum depolamada yüksek yüke neden olabilir ve bu da depolama alanı azaltma veya geçici depolama hataları ile sonuçlanabilir. Aşağıdaki öneriler bu hataların üstesinden gelebilir (öncelik sırasına göre):

  • dışarı aktarma komutuna veya dış tablo tanımına sağlanan depolama hesaplarının sayısını artırın. Yük hesaplar arasında eşit olarak dağıtılır.

  • Dağıtım ipucunu per_node olarak ayarlayarak eşzamanlılığı azaltın (bkz. komut özellikleri).

  • İstemci isteği özelliğinidışarı aktaran düğüm sayısının eşzamanlılığını azaltın. özelliği dışarı aktarma sorgusunun bir parçası olarak ayarlanabilir. Örneğin, aşağıdaki komut eşzamanlı olarak depolamaya yazan düğüm sayısını düğümlerin %50'sine sınırlar:

    .export async  to csv
        ( h@"https://storage1.blob.core.windows.net/containerName;secretKey" ) 
        with
        (
            distribution="per_node"
        ) 
        <| 
        set query_fanout_nodes_percent = 50;
        ExportQuery
    
  • İstemci isteği özelliğini, parça dışarı aktarma başına kullanılırken her düğümde dışarı aktarılan iş parçacığı sayısının eşzamanlılığını azaltın. özelliği dışarı aktarma sorgusunun bir parçası olarak ayarlanabilir. Örneğin, aşağıdaki komut eşzamanlı olarak depolamaya yazılan iş parçacığı sayısını düğümlerin her birinde %50 ile sınırlar:

    .export async  to csv
        ( h@"https://storage1.blob.core.windows.net/containerName;secretKey" ) 
        with
        (
            distribution="per_shard"
        ) 
        <| 
        set query_fanout_threads_percent = 50;
        ExportQuery
    
  • Bölümlenmiş bir dış tabloya aktarıyorsanız, özelliklerin spread/concurrency ayarlanması eşzamanlılığı azaltabilir (komut özelliklerindeki ayrıntılara bakın).

  • Önceki önerilerden hiçbiri işe yaramazsa, distributed özelliğini false olarak ayarlayarak dağıtımı tamamen devre dışı bırakabilirsiniz. Ancak, komut performansını önemli ölçüde etkileyebileceği için bunu yapmanızı önermiyoruz.

Yetkilendirme hataları

Depolama bağlantı dizesi sağlanan kimlik bilgilerinin depolama alanına yazmasına izin verilmediğinde dışarı aktarma komutları sırasında kimlik doğrulaması veya yetkilendirme hataları oluşabilir. Dışarı aktarma komutu için veya kullanıcı tarafından atanan bir SAS belirteci kullanıyorsanız impersonate depolama hesabına yazmak için Depolama Blobu Veri Katkıda Bulunanı rolü gereklidir. Daha fazla bilgi için bkz. Depolama bağlantı dizesi.

Veri türleri eşlemesi

Parquet veri türleri eşlemesi

Dışarı aktarmada Kusto veri türleri, aşağıdaki kurallar kullanılarak Parquet veri türleriyle eşlenir:

Kusto Veri Türü Parquet Veri Türü Parquet Ek Açıklaması Açıklamalar
bool BOOLEAN
datetime INT64 TIMESTAMP_MICROS
dynamic BYTE_ARRAY UTF-8 JSON dizesi olarak seri hale getirilmiş
guid BYTE_ARRAY UTF-8
int INT32
long INT64
real DOUBLE
string BYTE_ARRAY UTF-8
timespan INT64 Keneler olarak depolanır (100 nanosaniye birim) sayısı
decimal FIXED_LENGTH_BYTE_ARRAY ON -DA -LIK