bin()
Arredonda os valores até um número inteiro múltiplo de um determinado tamanho de compartimentalização.
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
Syntax
bin(
value,
roundTo)
Saiba mais sobre as convenções de sintaxe.
Parâmetros
Nome | Tipo | Obrigatório | Descrição |
---|---|---|---|
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. |
Retornos
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 intervalo de tempo
print bin(time(16d), 7d)
Saída
print_0 |
---|
14:00:00:00 |
Compartimento datetime
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 há linhas para compartimentos sem linha correspondente na tabela, é recomendável preencher a tabela com esses compartimentos. A consulta a seguir analisa eventos de tempestade de vento forte na Califórnia por uma semana em abril. No entanto, não há eventos em alguns 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 completa, 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 quanto há compartimentos 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 |
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de