Freigeben über


Operator „top-nested“

Gilt für: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft 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:

  1. Geben Sie nicht den Wert von N an.
  2. Verwenden Sie den Spaltennamen als Wert von Expr.
  3. Wird als Wert der Aggregation verwendetIgnore=max(1).
  4. 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

Screenshot der obersten fünf Zustände mit den meisten beschädigten Eigenschaften und alle anderen Zustände, die separat als Kreisdiagramm gerendert wurden.

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