Freigeben über


bin()

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

  1. Verwenden Sie den union Operator, um der Tabelle weitere Zeilen hinzuzufügen.
  2. Der range-Operator erzeugt eine Tabelle mit einer einzelnen Zeile und Spalte.
  3. Der mv-expand Operator über die range Funktion erstellt so viele Zeilen, wie zwischen StartTime und EndTime.
  4. Verwenden Sie eine PropertyDamage von 0.
  5. Der summarize Operator gruppiert Fächer aus der ursprünglichen Tabelle in die tabelle, die union 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