Freigeben über


Quantilw(), Quantilsw() (Aggregationsfunktion)

Gilt für: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

Die percentilew() Funktion berechnet eine gewichtete Schätzung für das angegebene quantil der durch Ausdruck definierten Grundgesamtheit. percentilesw() funktioniert ähnlich wie percentilew(). percentilesw() Kann jedoch mehrere gewichtete Quantilwerte gleichzeitig berechnen, was effizienter ist als die Berechnung der gewichteten Quantilwerte separat.

Gewichtete Quantile berechnen Quantils in einem Dataset, indem jedem Wert im Eingabedatensatz eine Gewichtung gegeben wird. Bei dieser Methode gilt jeder Wert als wiederholt eine Anzahl von Malen, die seiner Gewichtung entsprechen, die dann zum Berechnen des Quantils verwendet wird. Indem sie bestimmten Werten mehr Bedeutung verleihen, bieten gewichtete Quantile eine Möglichkeit, Quantile auf "gewichtete" Weise zu berechnen.

Informationen zum Berechnen von ungewichteten Quantilen finden Sie unter Quantils().

Hinweis

Diese Funktion wird zusammen mit dem Zusammenfassungsoperator verwendet.

Syntax

percentilew(Expr, weightExpr, percentile)

percentilesw(Expr, weightExpr, percentiles)

Erfahren Sie mehr über Syntaxkonventionen.

Parameter

Name Type Erforderlich Beschreibung
expr string ✔️ Der Ausdruck, der für die Aggregationsberechnung verwendet werden soll.
weightExpr long ✔️ Die Gewichtung, die jedem Wert zugewiesen werden soll.
Perzentil int oder long ✔️ Eine Konstante, die das Quantil angibt.
Perzentile int oder long ✔️ Ein oder mehrere kommagetrennte Quantile.

Gibt zurück

Gibt eine Tabelle mit den Schätzungen für den Ausdruck der angegebenen Quantils in der Gruppe zurück, die jeweils in einer separaten Spalte enthalten sind.

Hinweis

Informationen zum Zurückgeben der Quantils in einer einzelnen Spalte finden Sie unter "Perzentile zurückgeben" als Array.

Beispiele

Berechnen von gewichteten Quantilen

Gehen Sie davon aus, dass Sie die Zeit (Dauer) wiederholen, die eine auszuführende Aktion ausführt. Statt jeden Wert der Maßeinheit aufzuzeichnen, notieren Sie jeden Wert der Dauer, gerundet auf 100 msec und wie oft der gerundete Wert angezeigt wurde (BucketSize).

Wird summarize percentilesw(Duration, BucketSize, ...) verwendet, um die angegebenen Quantile auf "gewichtete" Weise zu berechnen. Behandeln Sie jeden Wert der Dauer so, als ob die BucketSize-Zeiten in der Eingabe wiederholt wurden, ohne diese Datensätze tatsächlich materialisieren zu müssen.

Das folgende Beispiel zeigt gewichtete Quantile. Verwenden Sie den folgenden Satz von Latenzwerten in Millisekunden: { 1, 1, 2, 2, 2, 5, 7, 7, 12, 12, 15, 15, 15, 18, 21, 22, 26, 35 }.

Um Bandbreite und Speicher zu reduzieren, führen Sie die Voraggregation für die folgenden Buckets aus: { 10, 20, 30, 40, 50, 100 } Zählen Sie die Anzahl der Ereignisse in jedem Bucket, um die folgende Tabelle zu erstellen:

let latencyTable = datatable (ReqCount:long, LatencyBucket:long) 
[ 
    8, 10, 
    6, 20, 
    3, 30, 
    1, 40 
];
latencyTable

Die Tabelle zeigt Folgendes an:

  • Acht Ereignisse im Bucket von 10 ms (entsprechend Teilmenge { 1, 1, 2, 2, 2, 5, 7, 7 })
  • Sechs Ereignisse im Bucket von 20 ms (entsprechend Teilmenge { 12, 12, 15, 15, 15, 18 })
  • Drei Ereignisse im 30-ms-Bucket (entsprechend Teilmenge { 21, 22, 26 })
  • Ein Ereignis im Bucket von 40 ms (entsprechend Teilmenge { 35 })

Zu diesem Zeitpunkt sind die ursprünglichen Daten nicht mehr verfügbar. Nur die Anzahl der Ereignisse in jedem Bucket. Verwenden Sie die percentilesw() Funktion, um Quantils aus diesen Daten zu berechnen. Verwenden Sie für die Quantile 50, 75 und 99,9 die folgende Abfrage:

let latencyTable = datatable (ReqCount:long, LatencyBucket:long) 
[ 
    8, 10, 
    6, 20, 
    3, 30, 
    1, 40 
];
latencyTable
| summarize percentilesw(LatencyBucket, ReqCount, 50, 75, 99.9)

Output

percentile_LatencyBucket_50 percentile_LatencyBucket_75 percentile_LatencyBucket_99_9
20 20 40

Zurückgeben von Quantilen als Array

Statt die Werte in einzelnen Spalten zurückzugeben, verwenden Sie die percentilesw_array() Funktion, um die Quantile in einer einzelnen Spalte des dynamischen Arraytyps zurückzugeben.

Syntax

percentilesw_array(Expr, weightExpr, percentiles)

Parameter

Name Type Erforderlich Beschreibung
expr string ✔️ Der Ausdruck, der für die Aggregationsberechnung verwendet werden soll.
Perzentile int, long oder dynamic ✔️ Ein oder mehrere kommagetrennte Quantile oder ein dynamisches Array von Quantilen. Jedes Quantil kann eine ganze Zahl oder ein langer Wert sein.
weightExpr long ✔️ Die Gewichtung, die jedem Wert zugewiesen werden soll.

Gibt zurück

Gibt eine Schätzung für den Ausdruck der angegebenen Quantils in der Gruppe als einzelne Spalte des dynamischen Arraytyps zurück.

Beispiele

Kommagetrennte Quantile

let latencyTable = datatable (ReqCount:long, LatencyBucket:long) 
[ 
    8, 10, 
    6, 20, 
    3, 30, 
    1, 40 
];
latencyTable
| summarize percentilesw_array(LatencyBucket, ReqCount, 50, 75, 99.9)

Output

percentile_LatencyBucket
[20, 20, 40]

Dynamisches Array von Quantilen

let latencyTable = datatable (ReqCount:long, LatencyBucket:long) 
[ 
    8, 10, 
    6, 20, 
    3, 30, 
    1, 40 
];
latencyTable
| summarize percentilesw_array(LatencyBucket, ReqCount, dynamic([50, 75, 99.9]))

Output

percentile_LatencyBucket
[20, 20, 40]