Operator „top-nested“
Gilt für: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Der top-nested
Operator führt hierarchische Aggregation und Wertauswahl aus.
Stellen Sie sich vor, Sie haben eine Tabelle mit Verkaufsinformationen wie Regionen, Vertriebsmitarbeitern und verkauften Beträgen. Der top-nested
Betreiber kann Ihnen dabei helfen, komplexe Fragen zu beantworten, z. B. "Was sind die fünf wichtigsten Regionen nach Vertrieb und wer sind die drei wichtigsten Vertriebsmitarbeiter in jeder dieser Regionen?"
Die Quelldaten werden basierend auf den in der ersten top-nested
Klausel festgelegten Kriterien, z. B. Region, partitioniert. Als Nächstes wählt der Operator die obersten Datensätze in jeder Partition mithilfe einer Aggregation aus, z. B. das Hinzufügen von Verkaufsbeträgen. Jede nachfolgende top-nested
Klausel verfeinern die partitionen, die durch die vorherige Klausel erstellt wurden, wodurch eine Hierarchie präziserer Gruppen erstellt wird.
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 des Umsatzes.
Syntax
T |
top-nested
[ N ] of
Expr [with
=
others
ConstExpr] by
Aggregation [asc
| desc
] [,
top-nested
... ]
Erfahren Sie mehr über Syntaxkonventionen.
Parameter
Name | Type | 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 unterschiedlichen 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 sie sich auf eine Spalte aus T oder umfasst eine Berechnung wie "bin()" in einer Spalte. Legen Sie optional einen Ausgabespaltennamen als Namensausdr = . |
ConstExpr | string |
Wenn angegeben, wird für jede Hierarchieebene ein Datensatz mit dem Wert hinzugefügt, der die Aggregation über alle Datensätze ist, die ihn nicht oben erstellt haben. | |
Aggregation | string |
Die Aggregationsfunktion, die auf Datensätze mit demselben Ausdruckswert angewendet wurde. Das Ergebnis bestimmt die wichtigsten Datensätze. Siehe Unterstützte Aggregationsfunktionen. Legen Sie optional einen Ausgabespaltennamen als Namensaggregation = 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 werden, und in der anderen Spalte werden die Ergebnisse der Aggregationsberechnung angezeigt.
Verwenden der with
others
Klausel
Die Verwendung des top-nested
Operators mit with
others
der Möglichkeit, die wichtigsten Inhalte in einem breiteren Dataset kontextualisiert anzuzeigen. Die Auswertung Ihrer Daten auf diese Weise ist beim visuellen Rendern der Daten hilfreich.
Einschließen von Daten aus anderen Spalten
In der Ausgabetabelle werden nur Spalten top-nested
als Klauselausdr angegeben.
So fügen 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.
- Wird als Wert der Aggregation verwendet
Ignore=max(1)
. - Entfernen Sie die unnötige
Ignore
Spalte mit der Projektabwesendung.
Ein Beispiel finden Sie unter "Neueste Ereignisse pro Status" mit anderen Spaltendaten.
Überlegungen zur Leistung
Die Anzahl der Datensätze kann exponentiell mit der Anzahl der top-nested
Klauseln wachsen, und das Datensatzwachstum ist sogar schneller, wenn der N-Parameter nicht angegeben ist. Dieser Operator kann eine beträchtliche Menge an Ressourcen verbrauchen.
Wenn die Aggregationsverteilung unregelmäßig ist, beschränken Sie die Anzahl der unterschiedlichen Werte, die zurückgegeben werden sollen, indem Sie N angeben. Verwenden Sie dann die with
others
=
ConstExpr-Klausel, um ein Gefühl der Gewichtung aller anderen Fälle zu erhalten.
Beispiele
Top beschädigte Zustände, Ereignistypen und Endstandorte durch Sachschäden
Die folgende Abfrage partitioniert die StormEvents
Tabelle nach der State
Spalte und berechnet den Gesamtschaden für jeden Zustand. Die Abfrage wählt die beiden obersten Zustände mit der größten Menge an Eigenschaftsschäden aus. Innerhalb dieser beiden obersten Zustände gruppiert die Abfrage die Daten nach EventType
und wählt die drei wichtigsten Ereignistypen mit den meisten Schäden aus. Anschließend gruppiert die Abfrage die Daten nach EndLocation
und wählt den EndLocation
mit dem höchsten Schaden aus. Nur ein EndLocation
Wert wird in den Ergebnissen angezeigt, möglicherweise aufgrund der großen Natur der Sturmereignisse oder nicht aufgrund der Dokumentation des Endstandorts.
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
Ausgabe
State | EventType | EndLocation | StateTotalDamage | EventTypeTotalDamage | EndLocationDamage |
---|---|---|---|---|---|
CALIFORNIA | Wildfire | 1445937600 | 1326315000 | 1326315000 | |
CALIFORNIA | HighWind | 1445937600 | 61320000 | 61320000 | |
CALIFORNIA | Trümmerfluss | 1445937600 | 48000000 | 48000000 | |
OKLAHOMA | IceStorm | 915470300 | 826000000 | 826000000 | |
OKLAHOMA | WinterStorm | 915470300 | 40027000 | 40027000 | |
OKLAHOMA | Hochwasser | COMMERCE | 915470300 | 21485000 | 20000000 |
Die fünf wichtigsten Zustände mit gruppierten Eigenschaftsschäden with
others
Im folgenden Beispiel wird der top-nested
Operator verwendet, um die fünf obersten Zustände mit den meisten Eigenschaftsschäden zu identifizieren und die with
others
Klausel verwendet, um beschädigte Eigenschaften für alle anderen Zustände zu gruppieren. Anschließend werden beschädigte Eigenschaften für die fünf obersten Zustände und alle anderen Zustände als piechart
verwendung des render
Befehls visualisiert.
StormEvents
| top-nested 5 of State with others="OtherStates" by sum(DamageProperty)
| render piechart
Output
Neueste Ereignisse pro Status mit anderen Spaltendaten
Die folgende Abfrage ruft die beiden neuesten Ereignisse für jeden US-Bundesstaat mit relevanten Ereignisdetails ab. Sie verwendet max(1)
innerhalb bestimmter Spalten, um Daten zu verteilen, ohne die oben geschachtelte Auswahllogik zu verwenden. Die generierten Ignore
Aggregationsspalten werden mithilfe von 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.
Neueste Datensätze pro Identität mit anderen Spaltendaten
Im folgenden top-nested
Beispiel werden die neuesten Datensätze pro Identität extrahiert und auf den im vorherigen Beispiel eingeführten Konzepten basiert. Die erste top-nested
Klausel partitioniert die Daten durch unterschiedliche Werte der id
Verwendung Ignore0=max(1)
als Platzhalter. Für jeden id
, es identifiziert die beiden zuletzt verwendeten Datensätze basierend auf der timestamp
. Andere Informationen werden mithilfe eines top-nested
Operators angefügt, ohne eine Anzahl anzugeben und als Platzhalter zu verwenden Ignore2=max(1)
. 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.
Output
id | Zeitstempel | 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 |