operator top-nested
Dotyczy: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Operator top-nested
wykonuje wybór agregacji hierarchicznej i wartości.
Załóżmy, że masz tabelę zawierającą informacje o sprzedaży, takie jak regiony, sprzedawcy i sprzedane kwoty. top-nested
Operator może pomóc ci odpowiedzieć na złożone pytania, takie jak "Jakie są pięć najważniejszych regionów według sprzedaży i którzy są trzema najlepszymi sprzedawcami w każdym z tych regionów?"
Dane źródłowe są partycjonowane na podstawie kryteriów określonych w pierwszej top-nested
klauzuli, takiej jak region. Następnie operator wybiera najlepsze rekordy w każdej partycji przy użyciu agregacji, na przykład dodając kwoty sprzedaży. Każda kolejna top-nested
klauzula uściśli partycje utworzone przez poprzednią klauzulę, tworząc hierarchię bardziej precyzyjnych grup.
Wynik jest tabelą z dwiema kolumnami na klauzulę. Jedna kolumna zawiera wartości partycjonowania, takie jak region, podczas gdy druga kolumna przechowuje wyniki obliczeń agregacji, takich jak suma sprzedaży.
Składnia
T top-nested
|
[ N ] of
Expr [with
=
others
ConstExpr] by
Agregacja [asc
| desc
] [,
top-nested
... ]
Dowiedz się więcej na temat konwencji składni.
Parametry
Nazwisko | Type | Wymagania | opis |
---|---|---|---|
T | string |
✔️ | Wyrażenie tabelaryczne danych wejściowych. |
N | int |
Liczba pierwszych wartości, które mają zostać zwrócone dla tego poziomu hierarchii. W przypadku pominięcia zwracane są wszystkie odrębne wartości. | |
Wyrażenie | string |
✔️ | Wyrażenie na rekord wejściowy wskazujący, która wartość ma być zwracana dla tego poziomu hierarchii. Zazwyczaj odwołuje się on do kolumny z języka T lub obejmuje obliczenie, takie jak bin() w kolumnie. Opcjonalnie ustaw nazwę kolumny wyjściowej jako Wyrażenie nazwy = . |
ConstExpr | string |
Jeśli zostanie określony, dla każdego poziomu hierarchii zostanie dodany jeden rekord z wartością agregacji dla wszystkich rekordów, które nie zostały dodane do góry. | |
Agregacja | string |
Funkcja agregacji zastosowana do rekordów z tą samą wartością wyrażenia . Wynik określa najważniejsze rekordy. Zobacz Obsługiwane funkcje agregacji. Opcjonalnie ustaw nazwę kolumny wyjściowej jako Agregacja nazw = . |
Obsługiwane funkcje agregacji
Obsługiwane są następujące funkcje agregacji:
Uwaga
Obsługiwane jest również dowolne kombinacje algebraiczne agregacji.
Zwraca
Tabela z dwiema kolumnami dla każdej klauzuli. Jedna kolumna zawiera unikatowe wartości obliczone przy użyciu wyrażenia, a druga kolumna zawiera wyniki uzyskane z obliczenia agregacji.
Używanie klauzuli with
others
top-nested
Za pomocą operatora z with
others
dodamy możliwość wyświetlania najwyższej zawartości kontekstowej w szerszym zestawie danych. Ocena danych w ten sposób jest cenna podczas wizualnego renderowania danych.
Dołączanie danych z innych kolumn
W tabeli wyjściowej są wyświetlane tylko kolumny określone jako top-nested
wyrażenie klauzuli.
Aby uwzględnić wszystkie wartości kolumny na określonym poziomie:
- Nie określaj wartości N.
- Użyj nazwy kolumny jako wartości Expr.
- Użyj
Ignore=max(1)
jako wartości Agregacja. - Usuń niepotrzebną
Ignore
kolumnę z kolumną project-away.
Aby zapoznać się z przykładem, zobacz Najnowsze zdarzenia na stan z innymi danymi kolumn.
Zagadnienia dotyczące wydajności
Liczba rekordów może rosnąć wykładniczo z liczbą top-nested
klauzul, a wzrost rekordu jest jeszcze szybszy, jeśli nie określono parametru N . Ten operator może zużywać znaczną ilość zasobów.
Jeśli rozkład agregacji jest nieregularny, ogranicz liczbę unikatowych wartości do zwrócenia, określając N. Następnie użyj klauzuli with
others
=
ConstExpr, aby uzyskać poczucie wagi wszystkich innych przypadków.
Przykłady
Uszkodzone stany, typy zdarzeń i lokalizacje końcowe według uszkodzeń mienia
Poniższe zapytanie partycjonuje tabelę StormEvents
według State
kolumny i oblicza łączne uszkodzenie właściwości dla każdego stanu. Zapytanie wybiera dwa pierwsze stany z największą ilością uszkodzeń właściwości. W tych dwóch pierwszych stanach zapytanie grupuje dane EventType
według i wybiera trzy najważniejsze typy zdarzeń z największą szkodą. Następnie zapytanie grupuje dane EndLocation
według i wybiera element EndLocation
o najwyższych uszkodzeniach. W wynikach pojawia się tylko jedna EndLocation
wartość, prawdopodobnie ze względu na duży charakter zdarzeń burzy lub nie dokumentując lokalizacji końcowej.
StormEvents // Data source.
| top-nested 2 of State by sum(DamageProperty), // Top 2 States by total damaged property.
top-nested 3 of EventType by sum(DamageProperty), // Top 3 EventType by total damaged property for each State.
top-nested 1 of EndLocation by sum(DamageProperty) // Top 1 EndLocation by total damaged property for each EventType and State.
| project State, EventType, EndLocation, StateTotalDamage = aggregated_State, EventTypeTotalDamage = aggregated_EventType, EndLocationDamage = aggregated_EndLocation
Wyjście
Stan | EventType | EndLocation | StateTotalDamage | EventTypeTotalDamage | EndLocationDamage |
---|---|---|---|---|---|
KALIFORNIA | Pożary lasów | 1445937600 | 1326315000 | 1326315000 | |
KALIFORNIA | HighWind | 1445937600 | 61320000 | 61320000 | |
KALIFORNIA | Przepływ gruzu | 1445937600 | 48000000 | 48000000 | |
OKLAHOMA | Burza lodowa | 915470300 | 826000000 | 826000000 | |
OKLAHOMA | Burza zimowa | 915470300 | 40027000 | 40027000 | |
OKLAHOMA | Powódź | HANDEL | 915470300 | 21485000 | 20000000 |
Pięć pierwszych stanów z uszkodzeniem with
others
nieruchomości pogrupowane
W poniższym przykładzie top-nested
użyto operatora , aby zidentyfikować pięć pierwszych stanów z największą szkodą dla właściwości i używa klauzuli with
others
do grupowania uszkodzonej właściwości dla wszystkich innych stanów. Następnie wizualizuje uszkodzoną piechart
właściwość dla pięciu pierwszych stanów i wszystkich innych stanów jako polecenie .render
StormEvents
| top-nested 5 of State with others="OtherStates" by sum(DamageProperty)
| render piechart
Wyjście
Najnowsze zdarzenia na stan z innymi danymi kolumn
Poniższe zapytanie pobiera dwa ostatnie zdarzenia dla każdego stanu USA z odpowiednimi szczegółami zdarzenia. Używa max(1)
ona w niektórych kolumnach do propagacji danych bez używania logiki wyboru zagnieżdżonej u góry. Wygenerowane Ignore
kolumny agregacji są usuwane przy użyciu polecenia project-away
.
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.
Najnowsze rekordy na tożsamość z innymi danymi kolumn
top-nested
Poniższy przykład wyodrębnia najnowsze rekordy na tożsamość i opiera się na pojęciach przedstawionych w poprzednim przykładzie. Pierwsza top-nested
klauzula dzieli dane na partycje według odrębnych id
wartości użycia Ignore0=max(1)
jako symbol zastępczy. Dla każdego id
elementu identyfikuje dwa najnowsze rekordy na podstawie elementu timestamp
. Inne informacje są dołączane przy użyciu top-nested
operatora bez określania liczby i użycia Ignore2=max(1)
jako symbolu zastępczego. Na koniec niepotrzebne kolumny agregacji są usuwane przy użyciu project-away
operatora .
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.
Wyjście
identyfikator | timestamp | otherInformation |
---|---|---|
Barak | 2016-01-01T00:00:00Z | 2 |
Donald | 2017-01-19T00:00:00Z | 6 |
Barak | 2017-01-20T00:00:00Z | 3 |
Donald | 2017-01-20T00:00:00Z | 100 |