bin()
Gilt für: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Rundet Werte auf eine ganze Zahl ab, die ein Vielfaches der angegebenen bin-Größe ist.
Wird häufig in Kombination mit summarize by ...
verwendet.
Wenn Sie über einen punktierten Satz von Werten verfügen, werden sie in einen kleineren Satz bestimmter Werte gruppiert.
Die
bin()
Funktionen sindfloor()
gleichwertig.
Syntax
bin(
value,
roundTo)
Erfahren Sie mehr über Syntaxkonventionen.
Parameter
Name | Type | Erforderlich | Beschreibung |
---|---|---|---|
value | int, long, real, timespan, or datetime | ✔️ | Der wert, der aufgerundet werden soll. |
roundTo | int, long, real oder timespan | ✔️ | Die "Bin-Größe", die den Wert dividiert. |
Gibt zurück
Das nächste Vielfache von roundTo unter dem Wert (value). NULL-Werte, eine bin-Größe von NULL oder eine negative bin-Größe ergeben NULL.
Beispiele
Numerischer Bin
print bin(4.5, 1)
Output
print_0 |
---|
4 |
Zeitbereichscontainer
print bin(time(16d), 7d)
Output
print_0 |
---|
14:00:00:00 |
Datetime-Container
print bin(datetime(1970-05-11 13:45:07), 1d)
Output
print_0 |
---|
1970-05-11T00:00:00Z |
Pad a table with null bins
Wenn Zeilen für Container ohne entsprechende Zeile in der Tabelle vorhanden sind, empfehlen wir, die Tabelle mit diesen Behältern zu versehen. Die folgende Abfrage untersucht starke Windsturmereignisse in Kalifornien für eine Woche im April. Es gibt jedoch keine Ereignisse an einigen Tagen.
let Start = datetime('2007-04-07');
let End = Start + 7d;
StormEvents
| where StartTime between (Start .. End)
| where State == "CALIFORNIA" and EventType == "Strong Wind"
| summarize PropertyDamage=sum(DamageProperty) by bin(StartTime, 1d)
Output
StartTime | PropertyDamage |
---|---|
2007-04-08T00:00:00Z | 3000 |
2007-04-11T00:00:00Z | 1.000 |
2007-04-12T00:00:00Z | 105000 |
Um die gesamte Woche darzustellen, werden mit den folgenden Abfragepads die Ergebnistabelle mit NULL-Werten für die fehlenden Tage dargestellt. Hier ist eine schrittweise Erläuterung des Prozesses:
- Verwenden Sie den
union
Operator, um der Tabelle weitere Zeilen hinzuzufügen. - Der
range
-Operator erzeugt eine Tabelle mit einer einzelnen Zeile und Spalte. - Der
mv-expand
Operator über dierange
Funktion erstellt so viele Zeilen, wie zwischenStartTime
undEndTime
. - Verwenden Sie eine
PropertyDamage
von0
. - Der
summarize
Operator gruppiert Fächer aus der ursprünglichen Tabelle in die tabelle, dieunion
vom Ausdruck erzeugt wird. Durch diesen Vorgang wird sichergestellt, dass die Ausgabe eine Zeile pro Intervall enthält, deren Wert entweder 0 oder die ursprüngliche Anzahl ist.
let Start = datetime('2007-04-07');
let End = Start + 7d;
StormEvents
| where StartTime between (Start .. End)
| where State == "CALIFORNIA" and EventType == "Strong Wind"
| union (
range x from 1 to 1 step 1
| mv-expand StartTime=range(Start, End, 1d) to typeof(datetime)
| extend PropertyDamage=0
)
| summarize PropertyDamage=sum(DamageProperty) by bin(StartTime, 1d)
Output
StartTime | PropertyDamage |
---|---|
2007-04-07T00:00:00Z | 0 |
2007-04-08T00:00:00Z | 3000 |
2007-04-09T00:00:00Z | 0 |
2007-04-10T00:00:00Z | 0 |
2007-04-11T00:00:00Z | 1.000 |
2007-04-12T00:00:00Z | 105000 |
2007-04-13T00:00:00Z | 0 |
2007-04-14T00:00:00Z | 0 |