Operatore make-series

Crea una serie di valori aggregati specificati lungo un asse specificato.

Sintassi

T| make-series [MakeSeriesParameters] [Column=] Aggregazione [default=DefaultValue] [, ...] onAxisColumn [start] [tofromfine] passaggio [by [Colonna=] stepGroupExpression [, ...]]

Altre informazioni sulle convenzioni di sintassi.

Parametri

Nome Tipo Obbligatoria Descrizione
Colonna string Nome della colonna dei risultati. Il valore predefinito è un nome derivato dall'espressione.
Defaultvalue scalare Valore predefinito da usare anziché valori assenti. Se non è presente alcuna riga con valori specifici di AxisColumn e GroupExpression, l'elemento corrispondente della matrice verrà assegnato a DefaultValue. Il valore predefinito è 0.
Aggregazione string ✔️ Una chiamata a una funzione di aggregazione, ad count() esempio o avg(), con nomi di colonna come argomenti. Vedere l' elenco delle funzioni di aggregazione. Con l'operatore make-series è possibile usare solo funzioni di aggregazione che restituiscono risultati numerici.
AxisColumn string ✔️ Colonna in base alla quale verrà ordinata la serie. In genere i valori di colonna saranno di tipo datetime o timespan ma tutti i tipi numerici vengono accettati.
start scalare ✔️ Valore a basso limite di AxisColumn per la compilazione di ogni serie. Se l'avvio non è specificato, sarà il primo bin o il primo passaggio, che contiene dati in ogni serie.
end scalare ✔️ Valore non inclusivo associato elevato di AxisColumn. L'ultimo indice della serie temporale è minore di questo valore e verrà avviato più intero più di un passaggio minore rispetto alla fine. Se la fine non è specificata, sarà il limite superiore dell'ultimo bin o passaggio, che contiene dati per ogni serie.
Passo scalare ✔️ Differenza o dimensione bin, tra due elementi consecutivi della matrice AxisColumn . Per un elenco di possibili intervalli di tempo, vedere timepan.
GroupExpression Espressione sulle colonne che fornisce un set di valori distinti. In genere è un nome di colonna che fornisce già un set limitato di valori.
MakeSeriesParameters Zero o più parametri separati dallo spazio sotto forma diValorenome= che controllano il comportamento. Vedere i parametri di serie supportati.

Nota

I parametri start, end e step vengono usati per compilare una matrice di valori AxisColumn . La matrice è costituita da valori tra inizio e fine, con il valore del passaggio che rappresenta la differenza tra un elemento matrice e quello successivo. Tutti i valori di Aggregazione vengono ordinati rispettivamente in base a questa matrice.

Parametri di serie supportati

Nome Descrizione
kind Genera il risultato predefinito quando l'input dell'operatore make-series è vuoto. Valore: nonempty
hint.shufflekey=<key> La shufflekey query condivide il carico di query nei nodi del cluster usando una chiave per partizionare i dati. Vedere query shuffle

Nota

Le matrici generate da serie make-series sono limitate ai valori 1048576 (2^20). Il tentativo di generare una matrice di dimensioni maggiori con serie make-series comporta un errore o una matrice troncata.

Sintassi alternativa

T| make-series [Colonna=] Aggregazione [DefaultValue] [,default= ...] onAxisColumninrange(Iniziare,Fermare,Passo) [by [Colonna=] GroupExpression [, ...]]

La serie generata dalla sintassi alternativa è diversa da quella della sintassi principale per due aspetti:

  • Il valore di stop è inclusivo.
  • Il riempimento dei bin dell'asse di indice viene generato con bin() e non con bin_at(), il che significa che il valore di start potrebbe non essere incluso nella serie generata.

È consigliabile usare la sintassi principale di make-series e non la sintassi alternativa.

Restituisce

Le righe di input sono disposte in gruppi con gli stessi valori dell'espressione by e dell'espressione bin_at(AxisColumn,step,start). Vengono quindi calcolate per ogni gruppo le funzioni di aggregazione specificate, generando una riga per ogni gruppo. Il risultato contiene le colonne by, AxisColumn e anche almeno una colonna per ogni aggregazione calcolata. Le aggregazioni su più colonne o risultati non numerici non sono supportati.

Questo risultato intermedio include tutte le righe che costituiscono combinazioni distinte di by e dei valori di bin_at(AxisColumn,step,start).

Infine, le righe del risultato intermedio vengono disposte in gruppi con gli stessi valori delle espressioni by e tutti i valori aggregati vengono disposti in matrici (valori di tipo dynamic). Per ogni aggregazione è presente una colonna contenente la matrice con lo stesso nome. L'ultima colonna è una matrice contenente i valori di AxisColumn binned in base al passaggio specificato.

Nota

Anche se è possibile specificare espressioni arbitrarie per le espressioni di aggregazione e raggruppamento, è preferibile usare nomi di colonna semplici.

Elenco di funzioni di aggregazione

Funzione Descrizione
avg() Restituisce un valore medio nel gruppo
avgif() Restituisce una media con il predicato del gruppo
count() Restituisce un conteggio del gruppo
countif() Restituisce un conteggio con il predicato del gruppo
dcount() Restituisce un numero approssimativo di valori distinti degli elementi del gruppo
dcountif() Restituisce un numero approssimativo di valori distinti con il predicato del gruppo
max() Restituisce il valore massimo nel gruppo
maxif() Restituisce il valore massimo con il predicato del gruppo
min() Restituisce il valore minimo nel gruppo
minif() Restituisce il valore minimo con il predicato del gruppo
percentile() Restituisce il valore percentile nel gruppo
take_any() Restituisce un valore casuale non vuoto per il gruppo
stdev() Restituisce la deviazione standard del gruppo
sum() Restituisce la somma degli elementi all'interno del gruppo
sumif() Restituisce la somma degli elementi con il predicato del gruppo
variance() Restituisce la varianza del gruppo

Elenco di funzioni di analisi delle serie

Funzione Descrizione
series_fir() Applica il filtro Finite Impulse Response
series_iir() Applica il filtro Infinite Impulse Response
series_fit_line() Trova una linea retta che rappresenta la migliore approssimazione dell'input
series_fit_line_dynamic() Trova una linea che rappresenta la migliore approssimazione dell'input, restituendo un oggetto dinamico
series_fit_2lines() Trova due linee che rappresentano la migliore approssimazione dell'input
series_fit_2lines_dynamic() Trova due linee che rappresentano la migliore approssimazione dell'input, restituendo un oggetto dinamico
series_outliers() Assegna un punteggio ai punti anomali di una serie
series_periods_detect() Trova i periodi più significativi esistenti in una serie temporale
series_periods_validate() Verifica se una serie temporale contiene modelli periodici di lunghezze specificate
series_stats_dynamic() Restituisce più colonne con la statistica comune (min/max/varianza/deviazione standard/media)
series_stats() Genera un valore dinamico con la statistica comune (min/max/varianza/deviazione standard/media)

Per un elenco completo delle funzioni di analisi delle serie, vedere: Funzioni di elaborazione delle serie

Elenco di funzioni di interpolazione della serie

Funzione Descrizione
series_fill_backward() Esegue l'interpolazione di riempimento all'indietro dei valori mancanti in una serie
series_fill_const() Sostituisce i valori mancanti in una serie con un valore costante specificato
series_fill_forward() Esegue l'interpolazione di riempimento in avanti dei valori mancanti in una serie
series_fill_linear() Esegue l'interpolazione lineare dei valori mancanti in una serie
  • Nota: Le funzioni di interpolazione per impostazione predefinita presuppongono null come valore mancante. Pertanto, specificare default=double(null) in make-series se si prevede di usare le funzioni di interpolazione per la serie.

Esempio

Una tabella che mostra una matrice di numeri e prezzi medi di ogni frutto offerto da ogni fornitore ordinati per timestamp con l'intervallo specificato. L'output include una riga per ogni combinazione distinta di frutta e fornitore. La colonna di output mostra la frutta, il fornitore e le matrici di conteggio, media e sequenza temporale completa (dal 1° gennaio 2016 al 10 gennaio 2016). Tutte le matrici sono ordinate in base al rispettivo timestamp e tutti i valori mancanti vengono sostituiti dai valori predefiniti (0 in questo esempio). Tutte le altre colonne di input vengono ignorate.

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

Tre tabelle. La prima elenca dati non elaborati, la seconda contiene solo le combinazioni distinte di fornitore-frutta-data e la terza contiene i risultati di 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 l'input di make-series è vuoto, il comportamento predefinito di make-series produce un risultato vuoto.

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 

Output

Conteggio
0

L'uso di kind=nonempty in make-series produce un risultato non vuoto dei valori predefiniti:

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 

Output

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"
]