Teilen über


bin()

Gilt für: ✅Microsoft Fabric

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( Wert,roundTo)

Erfahren Sie mehr über Syntaxkonventionen.

Parameter

Name Typ Erforderlich Beschreibung
Wert 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

Im folgenden Beispiel wird die bin() Funktion mit numerischen Daten veranschaulicht.

print bin(4.5, 1)

Ausgabe

print_0
4

Im folgenden Beispiel wird die bin() Funktion mit Zeitbereichsdaten veranschaulicht.

print bin(time(16d), 7d)

Ausgabe

print_0
14:00:00:00

Im folgenden Beispiel wird die bin() Funktion mit Datetime-Daten veranschaulicht.

print bin(datetime(1970-05-11 13:45:07), 1d)

Ausgabe

print_0
1970-05-11T00:00:00Z

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)

Ausgabe

Startzeit 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)

Ausgabe

Startzeit 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