Share via


operador make-series

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

Syntax

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

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Tipo Obrigatório Descrição
Coluna string O nome da coluna de resultado. Assume o padrão de um nome derivado da expressão.
DefaultValue escalar Um valor padrão a ser usado em vez de valores ausentes. Se não houver uma linha com valores específicos de AxisColumn e GroupExpression, o elemento correspondente da matriz assumirá 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 coluna como argumentos. Confira 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 na qual a série será ordenada. Normalmente, os valores de coluna serão do tipo datetime ou timespan, mas todos os tipos numéricos são aceitos.
start escalar ✔️ O valor do limite inferior de AxisColumn para cada uma das séries a serem criadas. Se start não for especificado, será o primeiro compartimento, ou etapa, que tem dados em cada série.
end escalar ✔️ O valor não inclusivo do limite deAxisColumn. O último índice da série temporal é menor que esse valor e será o start mais o inteiro múltiplo de step que for menor que end. Se end não for especificado, ele será o limite superior do último compartimento, ou etapa, que tem dados para cada série.
step escalar ✔️ A diferença, ou o tamanho do compartimento, entre dois elementos consecutivos da matriz AxisColumn. Para obter uma lista de intervalos de tempo possíveis, confira timespan.
GroupExpression uma expressão sobre as colunas que fornece um conjunto de valores distintos. Geralmente é um nome de coluna que já fornece um conjunto restrito de valores.
MakeSeriesParameters zero ou mais parâmetros separados por espaço no formato Nome=Valor que controlam o comportamento. Confira parâmetros de série make com suporte.

Observação

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

Parâmetros de série make com suporte

Nome Descrição
kind Produz o 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. Confira a consulta aleatória

Observação

As matrizes geradas pelo make-series são limitadas a valores 1048576 (2^20). Tentar gerar uma matriz maior usando make-series resultará em um erro ou em uma matriz truncada.

Sintaxe alternativa

T| make-series [Coluna=] Agregação [default=DefaultValue] [, ...] onAxisColumninrange(start,stop,step) [by [Coluna=] GroupExpression [, ...]]

A série gerada com a sintaxe alternativa difere da sintaxe principal em dois aspectos:

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

É recomendável usar a sintaxe principal de make-series, e não a alternativa.

Retornos

As linhas de entrada são organizadas em grupos com os mesmos valores que as expressões by e a expressão bin_at(AxisColumn,etapa,início). 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 e AxisColumn e pelo menos uma coluna para cada agregação calculada. (Não há suporte para a agregação de várias colunas ou resultados não numéricos.)

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

Por fim, as linhas do resultado intermediário organizadas em grupos que têm os mesmos valores que as expressões by e todos os valores agregados são organizados em matrizes (valores do tipo dynamic). 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 compartimentalizados de acordo com a etapaespecificada.

Observação

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

Lista de funções de agregação

Função Descrição
avg() Retorna um valor médio em todo o grupo
avgif() Retorna uma média com o predicado do grupo
count() Retorna uma contagem do grupo
countif() Retorna uma contagem com o predicado do grupo
dcount() Retorna uma contagem distinta aproximada dos elementos do grupo
dcountif() Retorna uma contagem distinta aproximada com o predicado do grupo
max() Retorna o valor máximo no grupo
maxif() Retorna o valor máximo com o predicado do grupo
min() Retorna o valor mínimo no grupo
minif() Retorna o valor mínimo com o predicado do grupo
percentile() Retorna o valor do percentil entre o grupo
take_any() Retorna um valor não vazio aleatório para o grupo
stdev() Retorna o desvio padrão no grupo
sum() Retorna a soma dos elementos dentro do grupo
sumif() Retorna a soma dos elementos com o predicado do grupo
variance() Retorna a variância no grupo

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

Função Descrição
series_fir() Aplica o filtro de Resposta a impulso finito
series_iir() Aplica o filtro de Resposta a impulso infinito
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() Classifica pontos de anomalia em uma série
series_periods_detect() Encontra os períodos mais significativos existentes em uma série temporal
series_periods_validate() Verifica se uma série temporal contém padrões periódicos com os tamanhos fornecidos
series_stats_dynamic() Retorna várias colunas com as estatísticas comuns (mín./máx./variância/desvio padrão/média)
series_stats() Gera um valor dinâmico com as estatísticas comuns (mín./máx./variância/desvio padrão/média)

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

Lista de funções de interpolação de séries

Função Descrição
series_fill_backward() Executa a interpolação de preenchimento regressiva dos 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 progressiva dos valores ausentes em uma série
series_fill_linear() Executa a interpolação linear dos valores ausentes em uma série
  • Observação: Por padrão, as funções de interpolação pressupõem null como um valor ausente. Portanto, especifique default=double(null) em make-series se você pretende usar funções de interpolação para a série.

Exemplos

Uma tabela que mostra as matrizes dos números e os preços médios de cada fruta de cada fornecedor, ordenados pelo carimbo de data/hora com o intervalo especificado. Há uma linha na saída 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 a linha do tempo inteira (de 01/01/2016 até 10/01/2016). Todas as matrizes são classificadas pelo respectivo 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. A primeira lista dados brutos, a segunda tem apenas combinações distintas de fornecedor, fruta e data e a terceira contém os resultados de make-series.

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 timestamp
[ 4.0, 3.0, 5.0, 0.0, 10.5, 4.0, 3.0, 8.0, 6.5 ] [ "2017-01-01T00: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.0000000Z" ]

Quando a entrada de make-series estiver vazia, o comportamento padrão de make-series produzirá 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 

Saída

Contagem
0

Usar kind=nonempty em make-series produzirá 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 

Saída

avg_metric timestamp
[
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.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.0000000Z"
]