Compartilhar via


bin()

Aplica-se a: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

Arredonda os valores até um número inteiro múltiplo de um determinado tamanho do compartimento.

Usada frequentemente em combinação com summarize by .... Se você tiver um conjunto disperso de valores, eles serão agrupados em um conjunto menor de valores específicos.

As bin() funções e floor() são equivalentes

Sintaxe

bin(value,roundTo)

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Digitar Obrigatória Description
value int, long, real, timespan ou datetime ✔️ O valor a ser arredondado para baixo.
roundTo int, long, real ou timespan ✔️ O "tamanho do compartimento" que divide o valor.

Devoluções

O múltiplo mais próximo de roundTo abaixo de value. Valores nulos, um tamanho de compartimento nulo ou um tamanho de compartimento negativo resultarão em nulo.

Exemplos

Compartimento numérico

print bin(4.5, 1)

Saída

print_0
4

Compartimento de tempo

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

Saída

print_0
14:00:00:00

Compartimento de data e hora

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

Saída

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

Preencher uma tabela com compartimentos nulos

Quando houver linhas para compartimentos sem nenhuma linha correspondente na tabela, recomendamos preencher a tabela com esses compartimentos. A consulta a seguir analisa eventos de tempestades de vento fortes na Califórnia por uma semana em abril. No entanto, não há eventos em alguns dos dias.

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)

Saída

StartTime Danosà propriedade
2007-04-08T00:00:00Z 3000
2007-04-11T00:00:00Z 1000
2007-04-12T00:00:00Z 105000

Para representar a semana inteira, a consulta a seguir preenche a tabela de resultados com valores nulos para os dias ausentes. Aqui está uma explicação passo a passo do processo:

  1. Use o union operador para adicionar mais linhas à tabela.
  2. O operador range produzirá uma tabela com somente uma linha e coluna.
  3. O mv-expand operador sobre a range função cria tantas linhas quantas forem as caixas entre StartTime e EndTime.
  4. Use uma PropertyDamage de 0.
  5. O summarize operador agrupa compartimentos da tabela original para a tabela produzida pela union expressão. Esse processo garantirá que a saída tenha uma linha por compartimento cujo valor será zero ou a contagem 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)

Saída

StartTime Danosà propriedade
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