top-nested operator
Der top-nested
Operator führt hierarchische Aggregation und Wertauswahl aus.
Stellen Sie sich vor, Sie verfügen über eine Tabelle mit Verkaufsinformationen wie Regionen, Vertriebsmitarbeitern und verkauften Beträgen. Der top-nested
Betreiber kann Ihnen dabei helfen, komplexe Fragen zu beantworten, wie z. B. "Welche fünf Regionen sind nach Verkäufen und wer sind die drei besten Vertriebsmitarbeiter in jeder dieser Regionen?"
Die Quelldaten werden basierend auf den Kriterien partitioniert, die in der ersten top-nested
Klausel festgelegt sind, z. B. region. Als Nächstes wählt der Operator die obersten Datensätze in jeder Partition mithilfe einer Aggregation aus, z. B. durch Hinzufügen von Umsatzbeträgen. Jede nachfolgende top-nested
Klausel verfeinern die Partitionen, die von der vorherigen Klausel erstellt wurden, und erstellt eine Hierarchie präziserer Gruppen.
Das Ergebnis ist eine Tabelle mit zwei Spalten pro Klausel. Eine Spalte enthält die Partitionierungswerte, z. B. Region, während die andere Spalte die Ergebnisse der Aggregationsberechnung enthält, z. B. die Summe der Verkäufe.
Syntax
T|
top-nested
[ N ] of
Expr [with
others
=
ConstExpr] by
Aggregation [] [asc
| desc
,
top-nested
... ]
Erfahren Sie mehr über Syntaxkonventionen.
Parameter
Name | Typ | Erforderlich | Beschreibung |
---|---|---|---|
T | string |
✔️ | Der tabellarische Eingabeausdruck. |
N | int |
Die Anzahl der obersten Werte, die für diese Hierarchieebene zurückgegeben werden sollen. Wenn nicht angegeben, werden alle eindeutigen Werte zurückgegeben. | |
Expr | string |
✔️ | Ein Ausdruck über dem Eingabedatensatz, der angibt, welcher Wert für diese Hierarchieebene zurückgegeben werden soll. In der Regel bezieht es sich auf eine Spalte aus T oder umfasst eine Berechnung wie bin() für eine Spalte. Legen Sie optional den Namen einer Ausgabespalte auf Name= Expr fest. |
ConstExpr | string |
Falls angegeben, wird für jede Hierarchieebene ein Datensatz mit dem Wert hinzugefügt, der die Aggregation über alle Datensätze darstellt, die es nicht nach oben schaffen. | |
Aggregation | string |
Die Aggregationsfunktion, die auf Datensätze mit demselben Expr-Wert angewendet wird. Das Ergebnis bestimmt die wichtigsten Datensätze. Weitere Informationen finden Sie unter Unterstützte Aggregationsfunktionen. Legen Sie optional einen Ausgabespaltennamen auf Name= Aggregation fest. |
Unterstützte Aggregationsfunktionen
Die folgenden Aggregationsfunktionen werden unterstützt:
Hinweis
Jede algebraische Kombination der Aggregationen wird ebenfalls unterstützt.
Gibt zurück
Eine Tabelle mit zwei Spalten für jede Klausel. Eine Spalte enthält eindeutige Werte, die mit Expr berechnet wurden, und die andere Spalte zeigt die Ergebnisse der Aggregationsberechnung an.
Einschließen von Daten aus anderen Spalten
In der Ausgabetabelle werden nur Spalten angezeigt, die als top-nested
Expr-Klausel angegeben sind.
So schließen Sie alle Werte einer Spalte auf einer bestimmten Ebene ein:
- Geben Sie nicht den Wert von N an.
- Verwenden Sie den Spaltennamen als Wert von Expr.
- Verwenden Sie
Ignore=max(1)
als Wert von Aggregation. - Entfernen Sie die unnötige
Ignore
Spalte mit project-away.
Ein Beispiel finden Sie unter Abrufen der neuesten Ereignisse pro Zustand mit zusätzlichen Daten aus anderen Spalten.
Überlegungen zur Leistung
Die Anzahl der Datensätze kann exponentiell mit der Anzahl der Klauseln zunehmen, und das Wachstum des top-nested
Datensatzes ist noch schneller, wenn kein N-Limit angegeben wird. Dieser Operator kann eine beträchtliche Menge an Ressourcen verbrauchen.
Wenn die Verteilung der Aggregation erheblich ungleichmäßig ist, begrenzen Sie die Anzahl der zurückzugebenden unterschiedlichen Werte, indem Sie N angeben. Verwenden Sie dann die with
others
=
ConstExpr-Spezifikation , um eine Angabe für die Gewichtung aller anderen Fälle zu erhalten.
Beispiele
Erste Schritte mit dem top-nested
Operator
Die folgende Abfrage partitioniert die StormEvents
Tabelle nach der State
Spalte und berechnet die Gesamtbreite für jeden Zustand. Die Abfrage wählt die beiden obersten Zustände mit der höchsten Breitensumme aus. Innerhalb dieser beiden obersten Zustände gruppiert die Abfrage die Daten nach Source
und wählt die drei wichtigsten Quellen mit der höchsten Breitensumme aus. Für jede der drei wichtigsten Quellen in den beiden obersten Zuständen gruppiert die Abfrage die Daten EndLocation
nach und wählt die mit der EndLocation
höchsten Breitensumme aus.
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.
Ausgabe
State | aggregated_State | Quelle | aggregated_Source | EndLocation | aggregated_EndLocation |
---|---|---|---|---|---|
KANSAS | 87771.2355000001 | Strafverfolgungsbehörden | 18744.823 | FT SCOTT | 264.858 |
KANSAS | 87771.2355000001 | Öffentlich | 22855.6206 | BUCKLIN | 488.2457 |
KANSAS | 87771.2355000001 | Ausgebildeter „Spotter“ | 21279.7083 | SCHARON SPGS | 388.7404 |
TEXAS | 123400.5101 | Öffentlich | 13650.9079 | AMARILLO | 246.2598 |
TEXAS | 123400.5101 | Strafverfolgungsbehörden | 37228.5966 | PERRYTON | 289.3178 |
TEXAS | 123400.5101 | Ausgebildeter „Spotter“ | 13997.7124 | CLAUDE | 421.44 |
Verbessern der am besten geschachtelten Ergebnisse mit Daten aus einer anderen Spalte
Die folgende Abfrage baut auf dem vorherigen Beispiel auf, indem eine zusätzliche top-nested
Klausel eingeführt wird. In dieser neuen Klausel führt das Fehlen einer numerischen Spezifikation dazu, dass alle unterschiedlichen Werte von EventType
partitionsübergreifend extrahiert werden. Die max(1)
Aggregationsfunktion ist lediglich ein Platzhalter, der ihr Ergebnis irrelevant macht, sodass der Projekt-Away-Operator die Ignore
Spalte entfernt. Das Ergebnis zeigt alle Ereignistypen an, die den zuvor aggregierten Daten zugeordnet sind.
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
Ausgabe
State | aggregated_State | Quelle | aggregated_Source | EndLocation | aggregated_EndLocation | EventType |
---|---|---|---|---|---|---|
TEXAS | 123400.51009999994 | Öffentlich | 13650.907900000002 | AMARILLO | 246.25979999999998 | Hagel |
TEXAS | 123400.51009999994 | Öffentlich | 13650.907900000002 | AMARILLO | 246.25979999999998 | Sturm |
KANSAS | 87771.235500000068 | Öffentlich | 22855.6206 | BUCKLIN | 488.2457 | Hochwasser |
KANSAS | 87771.235500000068 | Öffentlich | 22855.6206 | BUCKLIN | 488.2457 | Sturm |
KANSAS | 87771.235500000068 | Öffentlich | 22855.6206 | BUCKLIN | 488.2457 | Hagel |
TEXAS | 123400.51009999994 | Ausgebildeter „Spotter“ | 13997.712400000009 | CLAUDE | 421.44 | Hagel |
KANSAS | 87771.235500000068 | Strafverfolgungsbehörden | 18744.823000000004 | FT SCOTT | 264.858 | Überschwemmung |
KANSAS | 87771.235500000068 | Strafverfolgungsbehörden | 18744.823000000004 | FT SCOTT | 264.858 | Sturm |
KANSAS | 87771.235500000068 | Strafverfolgungsbehörden | 18744.823000000004 | FT SCOTT | 264.858 | Hochwasser |
TEXAS | 123400.51009999994 | Strafverfolgungsbehörden | 37228.596599999961 | PERRYTON | 289.3178 | Hagel |
... | ... | ... | ... | ... | ... |
Verwenden Sie with
others
zum Untersuchen ausgeschlossener Daten
Wenn sie in eine top-nested
Klausel integriert wird, führt die with
others
Spezifikation einen zusätzlichen Datensatz ein, der Daten aggregiert, die aus den top-Ergebnissen ausgeschlossen sind. In der folgenden Abfrage wird in den Spalten und aggregated_State
ein zusätzlicher Datensatz erstellt, der State
den kollektiven Breitengrad aller Staaten mit Ausnahme von Kansas und Texas darstellt. Darüber hinaus verfügen die EndLocation
Spalte und aggregated_EndLocation
über zusätzliche neun Datensätze. Diese Datensätze zeigen den kombinierten Breitengrad der Endstandorte an, die nicht als oberster Standort in jedem Zustand und jeder Quelle qualifiziert sind.
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)
Ausgabe
State | aggregated_State | Quelle | aggregated_Source | EndLocation | aggregated_EndLocation |
---|---|---|---|---|---|
KANSAS | 87771.2355000001 | Strafverfolgungsbehörden | 18744.823 | FT SCOTT | 264.858 |
KANSAS | 87771.2355000001 | Öffentlich | 22855.6206 | BUCKLIN | 488.2457 |
KANSAS | 87771.2355000001 | Ausgebildeter „Spotter“ | 21279.7083 | SCHARON SPGS | 388.7404 |
TEXAS | 123400.5101 | Öffentlich | 13650.9079 | AMARILLO | 246.2598 |
TEXAS | 123400.5101 | Strafverfolgungsbehörden | 37228.5966 | PERRYTON | 289.3178 |
TEXAS | 123400.5101 | Ausgebildeter „Spotter“ | 13997.7124 | CLAUDE | 421.44 |
KANSAS | 87771.2355000001 | Strafverfolgungsbehörden | 18744.823 | Alle anderen Endspeicherorte | 18479.965 |
KANSAS | 87771.2355000001 | Öffentlich | 22855.6206 | Alle anderen Endspeicherorte | 22367.3749 |
KANSAS | 87771.2355000001 | Ausgebildeter „Spotter“ | 21279.7083 | Alle anderen Endspeicherorte | 20890.9679 |
TEXAS | 123400.5101 | Öffentlich | 13650.9079 | Alle anderen Endspeicherorte | 13404.6481 |
TEXAS | 123400.5101 | Strafverfolgungsbehörden | 37228.5966 | Alle anderen Endspeicherorte | 36939.2788 |
TEXAS | 123400.5101 | Ausgebildeter „Spotter“ | 13997.7124 | Alle anderen Endspeicherorte | 13576.2724 |
KANSAS | 87771.2355000001 | Alle anderen Endspeicherorte | 24891.0836 | ||
TEXAS | 123400.5101 | Alle anderen Endspeicherorte | 58523.2932000001 | ||
Alle anderen Zustände | 1149279.5923 | Alle anderen Endspeicherorte | 1149279.5923 |
Die folgende Abfrage zeigt die gleichen Ergebnisse für die erste Ebene, die im vorherigen Beispiel verwendet wurde.
StormEvents
| where State !in ('TEXAS', 'KANSAS')
| summarize sum(BeginLat)
Ausgabe
sum_BeginLat |
---|
1149279.5923 |
Hierarchische Ergebnisse sortieren
Um eine umfassende Sortierreihenfolge zu erreichen, verwendet die folgende Abfrage die indexbasierte Sortierung für jeden Wert innerhalb der aktuellen Hierarchieebene pro Gruppe. Diese Sortierung ist darauf ausgerichtet, das Ergebnis entsprechend der ultimativen geschachtelten Ebene anzuordnen, in diesem Fall die 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
Ausgabe
State | Quelle | EndLocations | endLocationSums | Indizes |
---|---|---|---|---|
TEXAS | Ausgebildeter „Spotter“ | CLAUDE | 421.44 | 0 |
TEXAS | Ausgebildeter „Spotter“ | AMARILLO | 316.8892 | 1 |
TEXAS | Ausgebildeter „Spotter“ | DALHART | 252.6186 | 2 |
TEXAS | Ausgebildeter „Spotter“ | PERRYTON | 216.7826 | 3 |
TEXAS | Strafverfolgungsbehörden | PERRYTON | 289.3178 | 0 |
TEXAS | Strafverfolgungsbehörden | LEAKEY | 267.9825 | 1 |
TEXAS | Strafverfolgungsbehörden | BRACKETTVILLE | 264.3483 | 2 |
TEXAS | Strafverfolgungsbehörden | GILMER | 261.9068 | 3 |
KANSAS | Ausgebildeter „Spotter“ | SCHARON SPGS | 388.7404 | 0 |
KANSAS | Ausgebildeter „Spotter“ | ATWOOD | 358.6136 | 1 |
KANSAS | Ausgebildeter „Spotter“ | LENORA | 317.0718 | 2 |
KANSAS | Ausgebildeter „Spotter“ | SCOTT CITY | 307.84 | 3 |
KANSAS | Öffentlich | BUCKLIN | 488.2457 | 0 |
KANSAS | Öffentlich | ASHLAND | 446.4218 | 1 |
KANSAS | Öffentlich | SCHUTZ | 446.11 | 2 |
KANSAS | Öffentlich | MEADE STATE PARK | 371.1 | 3 |
Abrufen der neuesten Ereignisse pro Status mit zusätzlichen Daten aus anderen Spalten
Die folgende Abfrage veranschaulicht, wie die beiden letzten Ereignisse für jeden US-Bundesstaat zusammen mit relevanten Ereignisdetails abgerufen werden. Beachten Sie die Verwendung von innerhalb bestimmter Spalten, die durch identifiziert werdenIgnore*
, wodurch die Weitergabe von max(1)
Daten über die Abfrage unterstützt wird, ohne eine Auswahllogik auferlegen zu müssen.
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.
Abrufen der neuesten Datensätze pro Identität mit zusätzlichen Daten aus anderen Spalten
Die folgende Abfrage veranschaulicht, wie Die neuesten Datensätze pro Identität extrahiert werden, und baut auf den im vorherigen Beispiel vorgestellten Konzepten auf. Die erste top-nested
-Klausel partitioniert die Daten nach unterschiedlichen Werten von id
. Die nachfolgende Klausel identifiziert die beiden letzten Datensätze basierend auf dem timestamp
für jeden id
. Andere Informationen werden mithilfe eines Operators zusammen mit einer top-nested
nicht angegebenen Anzahl und der beliebigen max(1)
Aggregation angefügt. Schließlich werden unnötige Aggregationsspalten mithilfe des project-away
-Operators entfernt.
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.
Ausgabe
id | 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 | 4 |
Verwandte Inhalte
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für