bin()

Arrondit les valeurs à l’entier inférieur multiple d’une taille bin donnée.

Fonction fréquemment utilisée en combinaison avec summarize by .... Si vous avez un ensemble de valeurs éparses, elles sont regroupées dans un ensemble plus petit de valeurs spécifiques.

Les bin() fonctions et floor() sont équivalentes

Syntaxe

bin(value,roundTo)

En savoir plus sur les conventions de syntaxe.

Paramètres

Nom Type Obligatoire Description
value int, long, real, timespan ou datetime ✔️ Valeur à arrondir.
roundTo int, long, real ou timespan ✔️ « Taille du bac » qui divise la valeur.

Retours

Multiple le plus proche de roundTo, inférieur à value. Des valeurs null, une taille de compartiment null ou une taille de compartiment négative génèrent le résultat null.

Exemples

Bac numérique

print bin(4.5, 1)

Sortie

print_0
4

Compartiment d’intervalle de temps

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

Sortie

print_0
14:00:00:00

Bac Datetime

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

Sortie

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

Pagayer une table avec des compartiments Null

Lorsqu’il existe des lignes pour les bacs sans ligne correspondante dans la table, nous vous recommandons de les compléter. La requête suivante examine les événements de fortes tempêtes de vent en Californie pendant une semaine en avril. Toutefois, il n’y a aucun événement sur certains jours.

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)

Sortie

StartTime Dommagesmatériels
2007-04-08T00 :00 :00Z 3000
2007-04-11T00 :00 :00Z 1 000
2007-04-12T00 :00 :00Z 105000

Pour représenter la semaine entière, la requête suivante permet de remplir la table de résultats avec des valeurs null pour les jours manquants. Voici une explication pas à pas du processus :

  1. Utilisez l’opérateur union pour ajouter d’autres lignes à la table.
  2. L’opérateur range génère une table comportant une seule ligne et une seule colonne.
  3. L’opérateur mv-expand sur la range fonction crée autant de lignes qu’il y a de compartiments entre StartTime et EndTime.
  4. Utilisez une PropertyDamage sur 0.
  5. L’opérateur summarize regroupe les compartiments de la table d’origine vers la table produite par l’expression union . Ce processus permet de veiller à ce que la sortie comporte une ligne par classe dont la valeur est égale à zéro ou au nombre d’origine.
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)

Sortie

StartTime Dommagesmatériels
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