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 |
, shuffle veya native değ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:
- count
- Farklı
- uzatmak
- make-series
- mv-apply
- mv-expand
- ayrıştırmak
- parse-where
- proje
- proje dışı
- project-keep
- project-rename
- project-reorder
- azaltmak
- örnek
- örnek-benzersiz
- taramak
- search
- seri hale getirme
- sıralayın
- Özetle
- almak
- Sayfanın Üstü
- en çok çarpanlar
- üst iç içe
- nerede
Not
- Alt tablo bölümleri dışındaki bir tablo kaynağına başvuran işleçler ve
shuffle
stratejileriylenative
uyumlu değildir. Örneğin, join, union, externaldata ve evaluate (eklentiler). Bu tür senaryolar için eski stratejiye başvur. - Alt sorgunun tek bir tablo sonucu döndürmesi gerektiğinden, çatal işleci hiçbir strateji türü için desteklenmez.
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 W
baş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 State
ilk 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 == 1
döndürür. - olduğunda
x == 2
, sorgu içeren tüm satırlarıStormEvents
InjuriesIndirect == 2
dö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))
)
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin