top-nested işleci

top-nested işleci hiyerarşik toplama ve değer seçimi gerçekleştirir.

Bölgeler, satış temsilcileri ve satılan tutarlar gibi satış bilgilerini içeren bir tablonuz olduğunu düşünün. Operatör top-nested , "Satışa göre ilk beş bölge nedir ve bu bölgelerin her birinde ilk üç satış temsilcisi kimdir?" gibi karmaşık soruları yanıtlamanıza yardımcı olabilir.

Kaynak veriler, bölge gibi ilk top-nested yan tümcede ayarlanan ölçütlere göre bölümlenmiştir. Ardından işleç, satış tutarları ekleme gibi bir toplama kullanarak her bölümdeki en önemli kayıtları seçer. Sonraki top-nested her yan tümce, önceki yan tümce tarafından oluşturulan bölümleri iyileştirerek daha kesin gruplardan oluşan bir hiyerarşi oluşturur.

Sonuç, yan tümce başına iki sütun içeren bir tablodur. Bir sütun bölge gibi bölümleme değerlerini tutarken, diğer sütun satış toplamı gibi toplama hesaplamasının sonuçlarını tutar.

Syntax

T|top-nested [ N ] ofİfade [withothers=ConstExpr] byToplama [asc | desc] [,
  top-nested ... ]

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

Parametreler

Ad Tür Gerekli Açıklama
T string ✔️ Giriş tablosal ifadesi.
N int Bu hiyerarşi düzeyi için döndürülecek en yüksek değerlerin sayısı. Atlanırsa, tüm benzersiz değerler döndürülür.
İfade string ✔️ Bu hiyerarşi düzeyi için döndürülecek değeri gösteren giriş kaydı üzerindeki bir ifade. Genellikle , T'den bir sütuna başvurur veya bir sütunda bin() gibi bir hesaplama içerir. İsteğe bağlı olarak, bir çıkış sütun adını Ad=İfadesi olarak ayarlayın.
ConstExpr string Belirtilirse, her hiyerarşi düzeyi için, en üste gelemedi tüm kayıtlar üzerinde toplama değeriyle bir kayıt eklenir.
Toplama string Aynı İfade değerine sahip kayıtlara uygulanan toplama işlevi. Sonuç, en üstteki kayıtları belirler. Bkz . Desteklenen toplama işlevleri. İsteğe bağlı olarak, bir çıkış sütun adını Ad=Toplama olarak ayarlayın.

Desteklenen toplama işlevleri

Aşağıdaki toplama işlevleri desteklenir:

Not

Toplamaların cebirsel bileşimleri de desteklenir.

Döndürülenler

Her yan tümce için iki sütun içeren bir tablo. Bir sütun Expr kullanılarak hesaplanan benzersiz değerler içerir ve diğer sütun toplama hesaplamasından elde edilen sonuçları gösterir.

Diğer sütunlardan veri ekleme

Çıkış tablosunda yalnızca yan tümce İfadesi olarak top-nested belirtilen sütunlar görüntülenir.

Belirli bir düzeydeki bir sütunun tüm değerlerini eklemek için:

  1. N değerini belirtmeyin.
  2. İfade değeri olarak sütun adını kullanın.
  3. Toplama değeri olarak kullanınIgnore=max(1).
  4. Projeden uzakta olan gereksiz Ignore sütunu kaldırın.

Örnek için bkz. Diğer sütunlardan ek verilerle durum başına en son olayları alma.

Performansla ilgili önemli noktalar

Kayıtların sayısı yan tümce sayısıyla top-nested üstel olarak artabilir ve N sınırı belirtilmezse kayıt büyümesi daha da hızlı olur. Bu işleç önemli miktarda kaynak tüketebilir.

Toplamanın dağılımı önemli ölçüde tekdüze değilse, N belirterek döndürülecek ayrı değerlerin sayısını sınırlayın. Ardından constExpr belirtimini withothers= kullanarak diğer tüm servis taleplerinin ağırlığına ilişkin bir gösterge elde edin.

Örnekler

işlecini top-nested kullanmaya başlama

Aşağıdaki sorgu tabloyu sütuna StormEventsState göre bölümler ve her durum için toplam enlemi hesaplar. Sorgu, enlem toplamı en yüksek olan ilk iki durumu seçer. Bu ilk iki durumda, sorgu verileri gruplandırır Source ve en yüksek enlem toplamına sahip ilk üç kaynağı seçer. İlk iki durumdaki ilk üç kaynağın her biri için sorgu verileri gruplandırır EndLocation ve en yüksek enlem toplamıyla öğesini seçer EndLocation .

StormEvents                                        // Data source.
| top-nested 2 of State       by sum(BeginLat),    // Top 2 States by total latitude.
  top-nested 3 of Source      by sum(BeginLat),    // Top 3 Sources by total latitude in each State.
  top-nested 1 of EndLocation by sum(BeginLat)     // Top 1 EndLocation by total latitude in each Source and State.

Çıkış

Durum aggregated_State Source aggregated_Source EndLocation aggregated_EndLocation
KANSAS 87771.2355000001 Kolluk 18744.823 FT SCOTT 264.858
KANSAS 87771.2355000001 Genel 22855.6206 BUCKLIN 488.2457
KANSAS 87771.2355000001 Eğitilmiş Gözcü 21279.7083 SHARON SPGS 388.7404
TEXAS 123400.5101 Genel 13650.9079 AMARİLLO 246.2598
TEXAS 123400.5101 Kolluk 37228.5966 PERRYTON 289.3178
TEXAS 123400.5101 Eğitilmiş Benekleyici 13997.7124 CLAUDE 421.44

Başka bir sütundaki verilerle iç içe yerleştirilmiş en üstteki sonuçları geliştirme

Aşağıdaki sorgu, ek top-nested bir yan tümcesi getirerek önceki örneği oluşturur. Bu yeni yan tümcede sayısal belirtim olmaması, bölümlerin tüm ayrı değerlerinin EventType ayık olmasına neden olur. max(1) Toplama işlevi yalnızca bir yer tutucu olduğundan sonucu ilgisiz hale getirilir, bu nedenle proje dışarıda işleci sütunu kaldırırIgnore. Sonuç, daha önce toplanan verilerle ilişkili tüm olay türlerini gösterir.

StormEvents
| top-nested 2 of State       by sum(BeginLat),
  top-nested 3 of Source      by sum(BeginLat),
  top-nested 1 of EndLocation by sum(BeginLat),
  top-nested   of EventType   by Ignore = max(1)
| project-away Ignore

Çıkış

Durum aggregated_State Source aggregated_Source EndLocation aggregated_EndLocation Olay türü
TEXAS 123400.51009999994 Genel 13650.907900000002 AMARİLLO 246.25979999999998 Dolu
TEXAS 123400.51009999994 Genel 13650.907900000002 AMARİLLO 246.25979999999998 Fırtına Rüzgarı
KANSAS 87771.235500000068 Genel 22855.6206 BUCKLIN 488.2457 Sel
KANSAS 87771.235500000068 Genel 22855.6206 BUCKLIN 488.2457 Fırtına Rüzgarı
KANSAS 87771.235500000068 Genel 22855.6206 BUCKLIN 488.2457 Dolu
TEXAS 123400.51009999994 Eğitilmiş Benekleyici 13997.712400000009 CLAUDE 421.44 Dolu
KANSAS 87771.235500000068 Kolluk 18744.823000000004 FT SCOTT 264.858 Ani Sel
KANSAS 87771.235500000068 Kolluk 18744.823000000004 FT SCOTT 264.858 Fırtına Rüzgarı
KANSAS 87771.235500000068 Kolluk 18744.823000000004 FT SCOTT 264.858 Sel
TEXAS 123400.51009999994 Kolluk 37228.596599999961 PERRYTON 289.3178 Dolu
... ... ... ... ... ...

Dışlanan verileri araştırmak için kullanın withothers

Belirtim, bir top-nested yan tümce içine withothers eklendiğinde, en üstteki sonuçlardan hariç tutulan verileri toplayan ek bir kayıt getirir. Aşağıdaki sorguda, ve aggregated_State sütunlarındaState, Kansas ve Texas dışındaki tüm eyaletlerin kolektif enlemini temsil eden ek bir kayıt oluşturulur. Ayrıca ve EndLocationaggregated_EndLocation sütununda fazladan dokuz kayıt vardır. Bu kayıtlar, her durum ve kaynak içinde en üst konum olarak nitelenmeyen birleştirilmiş uç konum enlemini gösterir.

StormEvents
| top-nested 2 of State with others = "All Other States" by sum(BeginLat),
  top-nested 3 of Source by sum(BeginLat),
  top-nested 1 of EndLocation with others = "All Other End Locations" by sum(BeginLat)

Çıkış

Durum aggregated_State Source aggregated_Source EndLocation aggregated_EndLocation
KANSAS 87771.2355000001 Kolluk 18744.823 FT SCOTT 264.858
KANSAS 87771.2355000001 Genel 22855.6206 BUCKLIN 488.2457
KANSAS 87771.2355000001 Eğitilmiş Benekleyici 21279.7083 SHARON SPGS 388.7404
TEXAS 123400.5101 Genel 13650.9079 AMARİLLO 246.2598
TEXAS 123400.5101 Kolluk 37228.5966 PERRYTON 289.3178
TEXAS 123400.5101 Eğitilmiş Benekleyici 13997.7124 CLAUDE 421.44
KANSAS 87771.2355000001 Kolluk 18744.823 Diğer Tüm Uç Konumlar 18479.965
KANSAS 87771.2355000001 Genel 22855.6206 Diğer Tüm Uç Konumlar 22367.3749
KANSAS 87771.2355000001 Eğitilmiş Benekleyici 21279.7083 Diğer Tüm Uç Konumlar 20890.9679
TEXAS 123400.5101 Genel 13650.9079 Diğer Tüm Uç Konumlar 13404.6481
TEXAS 123400.5101 Kolluk 37228.5966 Diğer Tüm Uç Konumlar 36939.2788
TEXAS 123400.5101 Eğitilmiş Benekleyici 13997.7124 Diğer Tüm Uç Konumlar 13576.2724
KANSAS 87771.2355000001 Diğer Tüm Uç Konumlar 24891.0836
TEXAS 123400.5101 Diğer Tüm Uç Konumlar 58523.2932000001
Diğer Tüm Eyaletler 1149279.5923 Diğer Tüm Uç Konumlar 1149279.5923

Aşağıdaki sorgu, önceki örnekte kullanılan ilk düzey için aynı sonuçları gösterir.

StormEvents
| where State !in ('TEXAS', 'KANSAS')
| summarize sum(BeginLat)

Çıkış

sum_BeginLat
1149279.5923

Hiyerarşik sonuçları sıralama

Kapsamlı bir sıralama düzeni elde etmek için aşağıdaki sorgu, geçerli hiyerarşi düzeyindeki her bir değer için grup başına dizin tabanlı sıralamayı kullanır. Bu sıralama, nihai iç içe düzeye göre sonucu düzenlemeye yöneliktir, bu durumda EndLocation.

StormEvents
| top-nested 2 of State by sum(BeginLat),
  top-nested 2 of Source by sum(BeginLat),
  top-nested 4 of EndLocation by sum(BeginLat)
| sort by State, Source, aggregated_EndLocation
| summarize
    EndLocations = make_list(EndLocation, 10000),
    endLocationSums = make_list(aggregated_EndLocation, 10000)
    by State, Source
| extend indicies = range(0, array_length(EndLocations) - 1, 1)
| mv-expand EndLocations, endLocationSums, indicies

Çıkış

Durum Source EndLocations endLocationSums Endeksi
TEXAS Eğitilmiş Gözcü CLAUDE 421.44 0
TEXAS Eğitilmiş Gözcü AMARİLLO 316.8892 1
TEXAS Eğitilmiş Gözcü DALHART 252.6186 2
TEXAS Eğitilmiş Gözcü PERRYTON 216.7826 3
TEXAS Kolluk PERRYTON 289.3178 0
TEXAS Kolluk LEAKEY 267.9825 1
TEXAS Kolluk BRACKETTVILLE 264.3483 2
TEXAS Kolluk GİLMER 261.9068 3
KANSAS Eğitilmiş Gözcü SHARON SPGS 388.7404 0
KANSAS Eğitilmiş Gözcü ATWOOD 358.6136 1
KANSAS Eğitilmiş Gözcü LENORA 317.0718 2
KANSAS Eğitilmiş Gözcü SCOTT CITY 307.84 3
KANSAS Genel BUCKLIN 488.2457 0
KANSAS Genel ASHLAND 446.4218 1
KANSAS Genel KORUMA 446.11 2
KANSAS Genel MEADE EYALET PARKI 371.1 3

Diğer sütunlardan ek verilerle durum başına en son olayları alma

Aşağıdaki sorgu, ilgili olay ayrıntılarıyla birlikte her ABD eyaleti için en son iki olayın nasıl alınduğunu gösterir. tarafından tanımlanan Ignore*ve herhangi bir seçim mantığı uygulamadan sorgu aracılığıyla veri yayılmaya yardımcı olan belirli sütunların içinde kullanımına max(1) dikkat edin.

StormEvents
| top-nested of State by Ignore0=max(1),                  // Partition the data by each unique value of state.
  top-nested 2 of StartTime by Ignore1=max(StartTime),    // Get the 2 most recent events in each state.
  top-nested of EndTime by Ignore2=max(1),                // Append the EndTime for each event.
  top-nested of EpisodeId by Ignore3=max(1)               // Append the EpisodeId for each event.
| project-away Ignore*                                    // Remove the unnecessary aggregation columns.
| order by State asc, StartTime desc                      // Sort results alphabetically and chronologically.

Diğer sütunlardan ek verilerle kimlik başına en son kayıtları alma

Aşağıdaki sorgu, kimlik başına en son kayıtları ayıklamayı gösterir ve önceki örnekte tanıtılan kavramları temel alır. first top-nested yan tümcesi, verileri farklı değerlerine idgöre bölümler. Sonraki yan tümce, her idiçin öğesini timestamp temel alan en son iki kaydı tanımlar. Diğer bilgiler belirtilmemiş bir sayı ve rastgele max(1) toplama ile birlikte bir top-nested işleç kullanılarak eklenir. Son olarak, gereksiz toplama sütunları işleci kullanılarak project-away kaldırılır.

datatable(id: string, timestamp: datetime, otherInformation: string) // Create a source datatable.
[
    "Barak", datetime(2015-01-01), "1",
    "Barak", datetime(2016-01-01), "2",
    "Barak", datetime(2017-01-20), "3",
    "Donald", datetime(2017-01-20), "4",
    "Donald", datetime(2017-01-18), "5",
    "Donald", datetime(2017-01-19), "6"
]
| top-nested of id by Ignore0=max(1),                     // Partition the data by each unique value of id.
  top-nested 2 of timestamp by Ignore1=max(timestamp),    // Get the 2 most recent events for each state.
  top-nested of otherInformation by Ignore2=max(1)        // Append otherInformation for each event.
| project-away Ignore0, Ignore1, Ignore2                  // Remove the unnecessary aggregation columns.

Çıkış

kimlik timestamp otherInformation
Bey 2016-01-01T00:00:00Z 2
Donald 2017-01-19T00:00:00Z 6
Bey 2017-01-20T00:00:00Z 3
Donald 2017-01-20T00:00:00Z 4