bin()

Redondea los valores hacia abajo hasta un entero múltiplo del tamaño de un intervalo determinado.

Se suele usar en combinación con summarize by .... Si tiene un conjunto disperso de valores, se agruparán en un conjunto más pequeño de valores específicos.

Las bin() funciones y floor() son equivalentes

Sintaxis

bin(value,roundTo)

Obtenga más información sobre las convenciones de sintaxis.

Parámetros

Nombre Tipo Requerido Descripción
value int, long, real, timespan o datetime ✔️ Valor que se va a redondear hacia abajo.
roundTo int, long, real o timespan ✔️ El "tamaño de discretización" que divide el valor.

Devoluciones

El múltiplo más cercano de roundTo por debajo de value. Los valores NULL, un tamaño de intervalo NULL o un tamaño de intervalo negativo darán como resultado NULL.

Ejemplos

Discretización numérica

print bin(4.5, 1)

Salida

print_0
4

Intervalo de tiempo

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

Salida

print_0
14:00:00:00

Datetime bin

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

Salida

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

Relleno de una tabla con contenedores NULOs

Cuando hay filas para contenedores sin fila correspondiente en la tabla, se recomienda rellenar la tabla con esos contenedores. En la consulta siguiente se examinan los eventos fuertes de tormentas eólicas en California durante una semana en abril. Sin embargo, no hay eventos en algunos de los días.

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)

Salida

StartTime Daños enla propiedad
2007-04-08T00:00:00Z 3000
2007-04-11T00:00:00Z 1000
2007-04-12T00:00:00Z 105000

Para representar la semana completa, la siguiente consulta rellena la tabla de resultados con valores NULL durante los días que faltan. Esta es una explicación paso a paso del proceso:

  1. Use el union operador para agregar más filas a la tabla.
  2. El operador range genera una tabla que tiene una sola fila y columna.
  3. El mv-expand operador sobre la range función crea tantas filas como hay intervalos entre StartTime y EndTime.
  4. Use PropertyDamage igual a 0.
  5. El summarize operador agrupa los intervalos de la tabla original a la tabla generada por la union expresión. Este proceso garantiza que la salida tenga una fila por rango cuyo valor sea cero o el recuento original.
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)

Salida

StartTime Daños enla propiedad
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 1000
2007-04-12T00:00:00Z 105000
2007-04-13T00:00:00Z 0
2007-04-14T00:00:00Z 0