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 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.
- Shuffle - milyonlarca anahtar bölüm değerine sahip ö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.
Syntax
T|
partition
[ hint.strategy=
Strateji ] [ İpuçları ] by
Sütun(
DönüşümüUbQuery)
T|
partition
[ hint.strategy=legacy
] [ İpuçları ] by
SubQueryWithSourceSütunu{
}
Söz dizimi kuralları hakkında daha fazla bilgi edinin.
Parametreler
Ad | Tür | Gerekli | 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 örtük olarak T kayıtlarını bölümleyerek üretilen alt tablodur. Her alt tablo , Sütun değeri üzerinde homojendir. İfade yalnızca bir tablo sonucu sağlamalı ve deyimler gibi let başka deyim türlerine 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 stratejide desteklenir. Alt sorgu yalnızca T'denSü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 deyim türlerine sahip olmamalıdır. |
İpuçları | string |
Şu biçimde 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 | Description |
---|---|---|---|
hint.shufflekey |
string |
shuffle | Bölüm işlecini stratejiyle shuffle çalıştırmak için kullanılan bölüm anahtarı. |
hint.materialized |
bool |
Eski | olarak ayarlanırsa true işlecin kaynağını partition oluşturur. false varsayılan değerdir. |
hint.concurrency |
int |
Eski | Paralel olarak çalıştırılacak bölüm sayısını belirler. 16 varsayılan değerdir. |
hint.spread |
int |
Eski | Bölümlerin küme düğümleri arasında nasıl dağıtileceğini belirler. 1 varsayılan değerdir.Örneğin, N bölümleri varsa ve yayılma ipucu P olarak ayarlanırsa , 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 bitiş sonucunu değiştirmez.
Yerel strateji
Bu strateji, bölüm anahtarının farklı değerlerinin sayısı kabaca binler içinde büyük olmadığında 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 desteklenen bazı işleçler kullanılabilir. Bölüm sayısıyla ilgili 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 desteklenen bazı işleçler kullanılabilir. Bölüm sayısıyla ilgili 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. sorguyu karıştırma.
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:
- Sayısı
- Farklı
- Genişlet -mek
- make-series
- mv-apply
- mv-expand
- Ayrıştı -rma
- parse-where
- Proje
- proje dışı
- project-keep
- project-rename
- project-reorder
- Azaltmak
- Örnek
- sample-distinct
- Tarama
- search
- seri hale getirme
- Sıralama
- Özetle
- al
- Sayfanın Üstü
- en çok vuranlar
- ü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 yerellegacy
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'denSütun anahtar sütununa başvurabilir. Sütuna başvurmak için Sütun)
söz dizimini toscalar(
kullanın.
Alt sorgu, tablosal kaynağı olmayan 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 atayın.
Not
Bölüm sütunu olan Sütun 64'ten fazla ayrı değer içeriyorsa hata oluşur.
Örnekler
En yüksek değerleri bulma
Bazı durumlarda, işlecini kullanmaktan daha performanslı ve işlecini partition
kullanarak sorgu yazmak daha top-nested
kolaydır. Aşağıdaki sorgu, ve ile başlayan W
her State
biri için bir alt sorgu summarize
top
çalıştırır: "WYOMING", "WASHINGTON", "WEST VIRGINIA" ve "WISCONSIN".
StormEvents
| where State startswith 'W'
| partition hint.strategy=native by State
(
summarize Events=count(), Injuries=sum(InjuriesDirect) by EventType, State
| top 3 by Events
)
Çıkış
Olay türü | Durum | Ekinlikler | Yaralanma |
---|---|---|---|
Dolu | WYOMİNG | 108 | 0 |
Yüksek Rüzgar | WYOMİNG | 81 | 5 |
Kış Fırtınası | WYOMİNG | 72 | 0 |
Yoğun Kar | WASHİNGTON | 82 | 0 |
Yüksek Rüzgar | WASHİNGTON | 58 | 13 |
Wildfire | WASHİNGTON | 29 | 0 |
Fırtına Rüzgarı | WEST VIRGINIA | 180 | 1 |
Dolu | WEST VIRGINIA | 103 | 0 |
Kış Hava Durumu | WEST VIRGINIA | 88 | 0 |
Fırtına Rüzgarı | WİSCONSİN | 416 | 1 |
Kış Fırtınası | WİSCONSİN | 310 | 0 |
Dolu | WİSCONSİN | 303 | 1 |
Yerel strateji
Aşağıdaki sorgu, 'W' ile başlayan her State
bir sorgu için tarafından 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
)
Çıkış
Olay türü | TotalInjueries |
---|---|
Kasırga | 4 |
Dolu | 1 |
Fırtına Rüzgarı | 1 |
Aşırı Isı | 0 |
Yüksek Rüzgar | 13 |
Lightning | 5 |
Yüksek Rüzgar | 5 |
Çığ | 3 |
Karıştırma stratejisi
Aşağıdaki sorgu foreach EpisodeId
ve ile sütunlarının State
EpisodeId
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
Çıkış
Count |
---|
22345 |
Açık kaynak ile eski strateji
Aşağıdaki sorgu iki alt sorgu çalıştırır:
- olduğunda
x == 1
, sorgu öğesini içerenInjuriesIndirect == 1
tüm satırlarınıStormEvents
döndürür. - olduğunda
x == 2
, sorgu öğesini içerenInjuriesIndirect == 2
tüm satırlarınıStormEvents
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
Çıkış
Count |
---|
113 |
Bölüm başvurusu
Aşağıdaki örnekte, her veri bölümüne bir "ad" vermek ve ardından bu adı alt sorgu içinde yeniden kullanmak için as işlecinin nasıl 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