bin()
Aplica-se a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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 efloor()
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:
- Use o
union
operador para adicionar mais linhas à tabela. - O operador
range
produzirá uma tabela com somente uma linha e coluna. - O
mv-expand
operador sobre arange
função cria tantas linhas quantas forem as caixas entreStartTime
eEndTime
. - Use uma
PropertyDamage
de0
. - O
summarize
operador agrupa compartimentos da tabela original para a tabela produzida pelaunion
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 |