Partilhar via


operador de criação de série

Aplica-se a: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

Crie séries de valores agregados especificados ao longo de um eixo especificado.

Sintaxe

T| make-series [MakeSeriesParameters] [Coluna=] Agregação [default=DefaultValue] [, ...] onAxisColumn [fromstart] [toend] stepstep [by [Coluna=] GroupExpression [, ...]]

Saiba mais sobre convenções de sintaxe.

Parâmetros

Nome Tipo Obrigatório Descrição
Coluna string O nome da coluna de resultados. O padrão é um nome derivado da expressão.
DefaultValue escalar Um valor padrão a ser usado em vez de valores ausentes. Se não houver nenhuma linha com valores específicos de AxisColumn e GroupExpression, o elemento correspondente da matriz receberá um DefaultValue. O padrão é 0.
Agregação string ✔️ Uma chamada para uma função de agregação , como count() ou avg(), com nomes de colunas como argumentos. Consulte a lista de funções de agregação. Somente funções de agregação que retornam resultados numéricos podem ser usadas com o operador make-series.
AxisColumn string ✔️ A coluna pela qual a série é ordenada. Normalmente, os valores de coluna são do tipo datetime ou timespan mas todos os tipos numéricos são aceitos.
começar escalar ✔️ O valor de limite baixo do AxisColumn para cada uma das séries a serem criadas. Se o início não for especificado, é o primeiro compartimento, ou etapa, que tem dados em cada série.
fim escalar ✔️ O valor não inclusivo de limite alto do AxisColumn. O último índice da série temporal é menor que esse valor e é início mais número inteiro múltiplo de etapa que é menor que fim. Se o fim não for especificado, é o limite superior do último compartimento, ou etapa, que tem dados por cada série.
passo escalar ✔️ A diferença, ou tamanho do compartimento, entre dois elementos consecutivos da matriz AxisColumn. Para obter uma lista de intervalos de tempo possíveis, consulte período de tempo.
Expressão de Grupo Uma expressão sobre as colunas que fornece um conjunto de valores distintos. Normalmente, é um nome de coluna que já fornece um conjunto restrito de valores.
MakeSeriesParameters Zero ou mais parâmetros separados por espaço na forma de Nome=Valor que controlam o comportamento. Consulte parâmetros de série suportados.

Observação

Os startparâmetros , end, e são step usados para criar uma matriz de valores AxisColumn . A matriz consiste em valores entre start e end, com o step valor representando a diferença entre um elemento de matriz para o próximo. Todos os valores de de agregação são ordenados respectivamente para esta matriz.

Parâmetros make series suportados

Nome Descrição
kind Produz resultado padrão quando a entrada do operador make-series está vazia. Valor: nonempty
hint.shufflekey=<key> A consulta shufflekey compartilha a carga de consulta em nós de cluster, usando uma chave para particionar dados. Consulte consulta aleatória

Observação

As matrizes geradas por make-series são limitadas a 1.048.576 valores (2^20). Tentar gerar uma matriz maior com make-series resultaria em um erro ou em uma matriz truncada.

de sintaxe alternativa

T| make-series [Coluna=] Agregação [default=DefaultValue] [, ...] onAxisColumninrange(iniciar,parar,etapa) [by [Coluna=] GroupExpression [, ...]]

A série gerada a partir da sintaxe alternativa difere da sintaxe principal em dois aspetos:

  • O valor stop é inclusivo.
  • A vinculação do eixo do índice é gerada com bin() e não com bin_at(), o que significa que o início pode não ser incluído na série gerada.

Recomendamos que você use a sintaxe principal de make-series e não a sintaxe alternativa.

Devoluções

As linhas de entrada são organizadas em grupos com os mesmos valores das expressões by e a bin_at(etapa AxisColumn,,iniciar) expressão. Em seguida, as funções de agregação especificadas são calculadas sobre cada grupo, produzindo uma linha para cada grupo. O resultado contém as colunas by, coluna AxisColumn e também pelo menos uma coluna para cada agregado calculado. (Não há suporte para agregações em várias colunas ou resultados não numéricos.)

Esse resultado intermediário tem tantas linhas quanto há combinações distintas de by e bin_at(AxisColumn,etapa,iniciar) valores.

Finalmente, as linhas do resultado intermediário organizadas em grupos com os mesmos valores das expressões by e todos os valores agregados são organizados em matrizes (valores de dynamic tipo). Para cada agregação, há uma coluna contendo sua matriz com o mesmo nome. A última coluna é uma matriz que contém os valores de AxisColumn binned de acordo com a etapa especificada.

Observação

Embora você possa fornecer expressões arbitrárias para as expressões de agregação e agrupamento, é mais eficiente usar nomes de coluna simples.

Lista de funções de agregação

Função Descrição
média() Devolve um valor médio em todo o grupo
Avgif() Devolve uma média com o predicado do grupo
contagem() Devolve uma contagem do grupo
Countif() Devolve uma contagem com o predicado do grupo
covariância() Devolve a covariância amostral de duas variáveis aleatórias
covariânciase() Devolve a covariância amostral de duas variáveis aleatórias com predicado
Covariancep() Devolve a covariância populacional de duas variáveis aleatórias
Covariancepif() Devolve a covariância populacional de duas variáveis aleatórias com predicado
dcount() Devolve uma contagem distinta aproximada dos elementos do grupo
dcountif() Devolve uma contagem distinta aproximada com o predicado do grupo
máx() Devolve o valor máximo em todo o grupo
maxif() Devolve o valor máximo com o predicado do grupo
min() Devolve o valor mínimo em todo o grupo
minif() Devolve o valor mínimo com o predicado do grupo
percentil() Devolve o valor do percentil em todo o grupo
take_any() Devolve um valor aleatório não vazio para o grupo
Stdev() Devolve o desvio padrão em todo o grupo
soma() Devolve a soma dos elementos dentro do grupo
sumif() Devolve a soma dos elementos com o predicado do grupo
variância() Devolve a variância da amostra em todo o grupo
variânciase() Devolve a variância da amostra no grupo com predicado
variânciap() Devolve a variância da população entre o grupo
variancepif() Devolve a variância da população entre o grupo com predicado

Lista de funções de análise de série

Função Descrição
series_fir() Aplica-se filtro de de resposta de impulso finito
series_iir() Aplica-se filtro Resposta de Impulso Infinita
series_fit_line() Encontra uma linha reta que é a melhor aproximação da entrada
series_fit_line_dynamic() Localiza uma linha que é a melhor aproximação da entrada, retornando o objeto dinâmico
series_fit_2lines() Localiza duas linhas que são a melhor aproximação da entrada
series_fit_2lines_dynamic() Localiza duas linhas que são a melhor aproximação da entrada, retornando o objeto dinâmico
series_outliers() Pontua pontos de anomalia em uma série
series_periods_detect() Localiza os períodos mais significativos que existem em uma série temporal
series_periods_validate() Verifica se uma série cronológica contém padrões periódicos de determinados comprimentos
series_stats_dynamic() Retornar várias colunas com as estatísticas comuns (min/max/variância/stdev/média)
series_stats() Gera um valor dinâmico com as estatísticas comuns (min/max/variância/stdev/média)

Para obter uma lista completa das funções de análise de série, consulte: Funções de processamento da série

Lista de funções de interpolação em série

Função Descrição
series_fill_backward() Executa a interpolação de preenchimento retroativo de valores ausentes em uma série
series_fill_const() Substitui os valores ausentes em uma série por um valor constante especificado
series_fill_forward() Executa a interpolação de preenchimento direto de valores ausentes em uma série
series_fill_linear() Executa interpolação linear de valores ausentes em uma série
  • Nota: As funções de interpolação por padrão assumem null como um valor ausente. Portanto, especifique default=duplo (null) em make-series se você pretende usar funções de interpolação para a série.

Exemplos

Uma tabela que mostra matrizes dos números e preços médios de cada fruta de cada fornecedor encomendado pelo carimbo de data/hora com intervalo especificado. Há uma linha na produção para cada combinação distinta de frutas e fornecedor. As colunas de saída mostram a fruta, o fornecedor e as matrizes de: contagem, média e toda a linha do tempo (de 2016-01-01 até 2016-01-10). Todas as matrizes são classificadas pelo respetivo carimbo de data/hora e todas as lacunas são preenchidas com valores padrão (0 neste exemplo). Todas as outras colunas de entrada são ignoradas.

T | make-series PriceAvg=avg(Price) default=0
on Purchase from datetime(2016-09-10) to datetime(2016-09-13) step 1d by Supplier, Fruit

Três tabelas. O primeiro lista dados brutos, o segundo tem apenas combinações distintas fornecedor-fruta-data e o terceiro contém os resultados da série make.

let data=datatable(timestamp:datetime, metric: real)
[
  datetime(2016-12-31T06:00), 50,
  datetime(2017-01-01), 4,
  datetime(2017-01-02), 3,
  datetime(2017-01-03), 4,
  datetime(2017-01-03T03:00), 6,
  datetime(2017-01-05), 8,
  datetime(2017-01-05T13:40), 13,
  datetime(2017-01-06), 4,
  datetime(2017-01-07), 3,
  datetime(2017-01-08), 8,
  datetime(2017-01-08T21:00), 8,
  datetime(2017-01-09), 2,
  datetime(2017-01-09T12:00), 11,
  datetime(2017-01-10T05:00), 5,
];
let interval = 1d;
let stime = datetime(2017-01-01);
let etime = datetime(2017-01-10);
data
| make-series avg(metric) on timestamp from stime to etime step interval 
avg_metric Marca temporal
[ 4.0, 3.0, 5.0, 0.0, 10.5, 4.0, 3.0, 8.0, 6.5 ] [ "2017-01-01T00:00:00:" 00.0000000Z", "2017-01-02T00:00:00.0000000Z", "2017-01-03T00:00:00.0000000Z", "2017-01-04T00:00:00.0000000Z", "2017-01-05T00:00:00.0000000Z", "2017-01-06T00:00:00.0000000Z", "2017-01-07T00:00:00.0000000Z", "2017-01-08T00:00:00.0000000Z", "2017-01-09T00:00:00:00.0000000Z" ]

Quando a entrada para make-series está vazia, o comportamento padrão de make-series produz um resultado vazio.

let data=datatable(timestamp:datetime, metric: real)
[
  datetime(2016-12-31T06:00), 50,
  datetime(2017-01-01), 4,
  datetime(2017-01-02), 3,
  datetime(2017-01-03), 4,
  datetime(2017-01-03T03:00), 6,
  datetime(2017-01-05), 8,
  datetime(2017-01-05T13:40), 13,
  datetime(2017-01-06), 4,
  datetime(2017-01-07), 3,
  datetime(2017-01-08), 8,
  datetime(2017-01-08T21:00), 8,
  datetime(2017-01-09), 2,
  datetime(2017-01-09T12:00), 11,
  datetime(2017-01-10T05:00), 5,
];
let interval = 1d;
let stime = datetime(2017-01-01);
let etime = datetime(2017-01-10);
data
| take 0
| make-series avg(metric) default=1.0 on timestamp from stime to etime step interval 
| count 

Realização

Contar
0

O uso kind=nonempty de in make-series produz um resultado não vazio dos valores padrão:

let data=datatable(timestamp:datetime, metric: real)
[
  datetime(2016-12-31T06:00), 50,
  datetime(2017-01-01), 4,
  datetime(2017-01-02), 3,
  datetime(2017-01-03), 4,
  datetime(2017-01-03T03:00), 6,
  datetime(2017-01-05), 8,
  datetime(2017-01-05T13:40), 13,
  datetime(2017-01-06), 4,
  datetime(2017-01-07), 3,
  datetime(2017-01-08), 8,
  datetime(2017-01-08T21:00), 8,
  datetime(2017-01-09), 2,
  datetime(2017-01-09T12:00), 11,
  datetime(2017-01-10T05:00), 5,
];
let interval = 1d;
let stime = datetime(2017-01-01);
let etime = datetime(2017-01-10);
data
| take 0
| make-series kind=nonempty avg(metric) default=1.0 on timestamp from stime to etime step interval 

Realização

avg_metric Marca temporal
[
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0
]
[
"2017-01-01T00:00:00.0000000Z",
"2017-01-02T00:00:00.0000000Z",
"2017-01-03T00:00:00.0000000Z",
"2017-01-04T00:00:00.00000000Z",
"2017-01-05T00:00:00.0000000Z",
"2017-01-06T00:00:00.0000000Z",
"2017-01-07T00:00:00.0000000Z",
"2017-01-08T00:00:00.0000000Z",
"2017-01-09T00:00:00.00000000Z"
]

Usando make-series e mv-expand para preencher valores para registros ausentes:

let startDate = datetime(2025-01-06);
let endDate = datetime(2025-02-09);
let data = datatable(Time: datetime, Value: int, other:int)
[
    datetime(2025-01-07), 10, 11,
    datetime(2025-01-16), 20, 21,
    datetime(2025-02-01), 30, 5
];
data
| make-series Value=sum(Value), other=-1 default=-2 on Time from startDate to endDate step 7d
| mv-expand Value, Time, other
| extend Time=todatetime(Time), Value=toint(Value), other=toint(other)
| project-reorder Time, Value, other 

Realização

Tempo / Hora Valor Outros
2025-01-06T00:00:00Z 10 -1
2025-01-13T00:00:00Z 20 -1
2025-01-20T00:00:00Z 0 -2
2025-01-27T00:00:00Z 30 -1
2025-02-03T00:00:00Z 0 -2