Aracılığıyla paylaş


partition işleci

Bölüm işleci, giriş tablosunun kayıtlarını bir anahtar sütunundaki değerlere göre birden çok alt tabloya böler. işleci her alt tabloda bir alt sorgu çalıştırır ve tüm alt sorguların sonuçlarının birleşimi olan tek bir çıkış tablosu oluşturur.

Bu işleç, yalnızca aynı bölüm anahtarına ait olan satırların bir alt kümesinde alt sorgu gerçekleştirmeniz gerektiğinde ve veri kümesinin tamamını sorgulamadığınızda kullanışlıdır. Bu alt sorgular toplama işlevlerini, pencere işlevlerini, ilk N'yi ve diğerlerini içerebilir.

Bölüm işleci, alt sorgu işleminin çeşitli stratejilerini destekler:

  • Yerel - binlerce anahtar bölüm değeri içeren örtük bir veri kaynağıyla kullanın.
  • Karıştırma - milyonlarca anahtar bölüm değeri içeren örtük bir kaynakla kullanın.
  • Eski - 64 veya daha az anahtar bölüm değeri için örtük veya açık bir kaynakla kullanın.

Sözdizimi

T | partition [ hint.strategy=Strateji ] [ İpuçları ] by Sütun ( DönüşümüUbQuery )

T partition | [ hint.strategy=legacy ] [ İpuçları ] by SubQueryWithSource Sütunu { }

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

Parametreler

Ad Tür Zorunlu Açıklama
T string ✔️ Giriş tablosal kaynağı.
Strateji string , shuffleveya nativedeğerilegacy. Bu ipucu, bölüm işlecinin yürütme stratejisini tanımlar.

Hiçbir strateji belirtilmezse, legacy strateji kullanılır. Daha fazla bilgi için bkz . Stratejiler.
Sütun string ✔️ T'de değerleri giriş tablosal kaynağının nasıl bölümleneceğini belirleyen bir sütunun adı.
TransformationSubQuery string ✔️ Tablosal dönüştürme ifadesi. Kaynak, T kayıtlarını bölümleyerek üretilen alt masaları örtük olarak oluşturur. Her alt tablo, Column değeri üzerinde homojendir.

İfade yalnızca bir tablo sonucu sağlamalı ve deyimler gibi let başka tür deyimlere sahip olmamalıdır.
SubQueryWithSource string ✔️ Tablo başvurusu gibi kendi tablosal kaynağını içeren tablosal ifade. Bu söz dizimi yalnızca eski stratejiyle desteklenir. Alt sorgu yalnızca T'den Sütun anahtar sütununa başvurabilir. Sütuna başvurmak için Sütun) söz dizimini toscalar(kullanın.

İfade yalnızca bir tablo sonucu sağlamalı ve deyimler gibi let başka tür deyimlere sahip olmamalıdır.
Ipuç -ları string biçiminde sıfır veya daha fazla boşlukla ayrılmış parametre: işlecin davranışını denetleen HintName = Değeri. Strateji türü başına desteklenen ipuçlarına bakın.

Desteklenen ipuçları

İpucu adı Tür Strateji Açıklama
hint.shufflekey string karıştırmak Stratejiyle shuffle bölüm işlecini çalıştırmak için kullanılan bölüm anahtarı.
hint.materialized bool miras olarak ayarlanırsa true, işlecin kaynağını partition oluşturur. Varsayılan değer şudur: false.
hint.concurrency int miras Paralel olarak çalıştırılacak bölüm sayısını belirler. Varsayılan değer şudur: 16.
hint.spread int miras Bölümlerin küme düğümleri arasında nasıl dağıtileceğini belirler. Varsayılan değer şudur: 1.

Örneğin, N bölümleri varsa ve yayılma ipucu P olarak ayarlandıysa, N bölümleri eşzamanlılık ipucuna bağlı olarak P farklı küme düğümleri tarafından paralel/sıralı olarak eşit olarak işlenir.

Döndürülenler

işleci, tek tek alt sorguların sonuçlarının birleşimini döndürür.

Stratejiler

Bölüm işleci, alt sorgu işleminin çeşitli stratejilerini destekler: yerel, karıştırma ve eski.

Not

ve shuffle stratejileri arasındaki native ayrım, çağıranın alt sorgunun kardinalitesini ve yürütme stratejisini belirtmesini sağlar. Bu seçim, alt sorgunun tamamlanmasının ne kadar sürdüğünü etkileyebilir ancak sonucu değiştirmez.

Yerel strateji

Bölüm anahtarının ayrı değerlerinin sayısı kabaca binler içinde büyük olmadığında bu strateji uygulanmalıdır.

Alt sorgu, tablosal kaynak belirtmeyen bir tablosal dönüşüm olmalıdır. Kaynak örtük ve alt tablo bölümlerine göre atanır. Alt sorguda yalnızca belirli desteklenen işleçler kullanılabilir. Bölüm sayısında bir kısıtlama yoktur.

Bu stratejiyi kullanmak için belirtin hint.strategy=native.

Karıştırma stratejisi

Bu strateji, bölüm anahtarının ayrı değerlerinin sayısı milyon cinsinden büyük olduğunda uygulanmalıdır.

Alt sorgu, tablosal kaynak belirtmeyen bir tablosal dönüşüm olmalıdır. Kaynak örtük ve alt tablo bölümlerine göre atanır. Alt sorguda yalnızca belirli desteklenen işleçler kullanılabilir. Bölüm sayısında bir kısıtlama yoktur.

Bu stratejiyi kullanmak için belirtin hint.strategy=shuffle. Karıştırma stratejisi ve performansı hakkında daha fazla bilgi için bkz . karıştırma sorgusu.

Yerel ve karıştırma stratejileri için desteklenen işleçler

Aşağıdaki işleç listesi yerel veya karıştırma stratejileriyle alt sorgularda kullanılabilir:

Not

Eski strateji

Geçmiş nedenlerden dolayı, legacy strateji varsayılan stratejidir. Ancak, yaklaşım 64 bölümle sınırlı olduğundan ve daha az verimli olduğundan yerel legacy veya karıştırma stratejilerini desteklemenizi öneririz.

Bazı senaryolarda, alt sorguya legacy tablosal bir kaynak ekleme desteği nedeniyle strateji gerekli olabilir. Böyle durumlarda, alt sorgu yalnızca giriş tablosal kaynağı olan T'den Sütun anahtar sütununa başvurabilir. Sütuna başvurmak için Sütun) söz dizimini toscalar(kullanın.

Alt sorgu, tablosal kaynak içermeyen bir tablosal dönüşümse, kaynak örtük olur ve alt tablo bölümlerini temel alır.

Bu stratejiyi kullanmak için diğer strateji göstergelerini belirtin hint.strategy=legacy veya atlar.

Not

Bölüm sütunu olan Sütun 64'ten fazla ayrı değer içeriyorsa bir hata oluşur.

Örnekler

En önemli değerleri bulma

Bazı durumlarda, işlecini kullanarak partition sorgu yazmak, işleci kullanmaktan top-nested daha performanslı ve daha kolaydır. Aşağıdaki sorgu, her State biri için "WYOMING", "WASHINGTON", "WEST VIRGINIA" ve "WISCONSIN" ile Wbaşlayan bir alt sorgu summarize top çalıştırır.

StormEvents
| where State startswith 'W'
| partition hint.strategy=native by State 
    (
    summarize Events=count(), Injuries=sum(InjuriesDirect) by EventType, State
    | top 3 by Events 
    ) 

Çıktı

EventType Durum Ekinlikler Yaralanma
Dolu WYOMİNG 108 0
Kuvvetli Rüzgar WYOMİNG 81 5
Kış Fırtınası WYOMİNG 72 0
Yoğun Kar WASHİNGTON Kategori 82 0
Kuvvetli Rüzgar WASHİNGTON 58 13
Wildfire WASHİNGTON 29 0
Gök Gürültülü Fırtına WEST VIRGINIA 180 1
Dolu WEST VIRGINIA 103 0
Kış Hava Durumu WEST VIRGINIA Kategori 88 0
Gök Gürültülü Fırtına WISCONSIN 416 1
Kış Fırtınası WISCONSIN 310 0
Dolu WISCONSIN 303 1

Yerel strateji

Aşağıdaki sorgu, 'W' ile başlayan her State bir sorgu için ölçütüne göre ilk 2 EventType değeri TotalInjuries döndürür:

StormEvents
| where State startswith 'W'
| partition hint.strategy = native by State
    (
    summarize TotalInjueries = sum(InjuriesDirect) by EventType
    | top 2 by TotalInjueries
    )

Çıktı

EventType TotalInjueries
Hortum 4
Dolu 1
Gök Gürültülü Fırtına 1
Aşırı Isı 0
Kuvvetli Rüzgar 13
Lightning 5
Kuvvetli Rüzgar 5
Çığ 3

Karıştırma stratejisi

Aşağıdaki sorgu foreach EpisodeId ve sütunlarını EpisodeId ve Stateilk 3 DamagedProperty değerini döndürür.

StormEvents
| partition hint.strategy=shuffle by EpisodeId
    (
    top 3 by DamageProperty
    | project EpisodeId, State, DamageProperty
    )
| count

Çıktı

Sayı
22345

Açık kaynak ile eski strateji

Aşağıdaki sorgu iki alt sorgu çalıştırır:

  • olduğunda x == 1, sorgu içeren tüm satırları StormEvents InjuriesIndirect == 1döndürür.
  • olduğunda x == 2, sorgu içeren tüm satırları StormEvents InjuriesIndirect == 2döndürür.

Nihai sonuç, bu iki alt sorgunun birleşimidir.

range x from 1 to 2 step 1
| partition hint.strategy=legacy by x {StormEvents | where x == InjuriesIndirect}
| count 

Çıktı

Sayı
113

Bölüm başvurusu

Aşağıdaki örnekte, her veri bölümüne bir "ad" vermek için as işlecinin nasıl kullanılacağı ve ardından bu adın alt sorgu içinde nasıl yeniden kullanılacağı gösterilmektedir. Bu yaklaşım yalnızca stratejiyle legacy ilgilidir.

T
| partition by Dim
(
    as Partition
    | extend MetricPct = Metric * 100.0 / toscalar(Partition | summarize sum(Metric))
)