Operátor make-series

Vytvoří řadu zadaných agregovaných hodnot podél zadané osy.

Syntax

T| make-series [MakeSeriesParameters] [Sloupec=] Agregace [default=DefaultValue] [, ...] onAxisColumn [fromstart] [toend] stepkrok [by [Column=] GroupExpression [, ...]]

Přečtěte si další informace o konvencích syntaxe.

Parametry

Název Typ Vyžadováno Popis
Sloupec string Název sloupce výsledků Výchozí hodnota je název odvozený z výrazu .
Defaultvalue Skalár Výchozí hodnota, která se použije místo chybějících hodnot. Pokud neexistuje žádný řádek s konkrétními hodnotami AxisColumn a GroupExpression, bude odpovídajícímu prvku pole přiřazena DefaultValue. Výchozí hodnota je 0.
Agregace string ✔️ Volání agregační funkce, například count() nebo avg(), s názvy sloupců jako argumenty. Podívejte se na seznam agregačních funkcí. S operátorem make-series je možné použít pouze agregační funkce, které vracejí číselné výsledky.
Sloupec osy string ✔️ Sloupec, podle kterého budou řady seřazeny. Hodnoty sloupců budou obvykle typu datetime , ale timespan přijímají se všechny číselné typy.
Spustit Skalár ✔️ Nízká hodnota AxisColumn pro každou řadu, která má být sestavena. Pokud není zadaný parametr start , bude to první přihrádka nebo krok, který obsahuje data v každé řadě.
Konec Skalár ✔️ Horní mez non-inclusive hodnota AxisColumn. Poslední index časové řady je menší než tato hodnota a bude počáteční plus celočíselný násobek kroku , který je menší než konec. Pokud není zadaný konec , bude to horní mez poslední přihrádky nebo kroku, která obsahuje data pro každou řadu.
Krok Skalár ✔️ Rozdíl nebo velikost intervalu mezi dvěma po sobě jdoucími prvky pole AxisColumn . Seznam možných časových intervalů najdete v části časový rozsah.
GroupExpression Výraz nad sloupci, který poskytuje sadu jedinečných hodnot. Obvykle se jedná o název sloupce, který už poskytuje omezenou sadu hodnot.
MakeSeriesParameters Žádné nebo více parametrů oddělených mezerami ve formě Name=Value , které řídí chování. Projděte si podporované parametry řady.

Poznámka

Parametry start, end a step se používají k vytvoření pole hodnot AxisColumn . Pole se skládá z hodnot mezi začátkem a koncem, přičemž hodnota kroku představuje rozdíl mezi jedním prvkem pole a dalším. Všechny hodnoty agregace jsou seřazené podle tohoto pole.

Podporované parametry vy make series

Název Description
kind Vytvoří výchozí výsledek, pokud je vstup operátoru vytvářecí řady prázdný. Hodnota: nonempty
hint.shufflekey=<key> Dotaz shufflekey sdílí zatížení dotazů na uzlech clusteru pomocí klíče k dělení dat. Viz dotaz náhodného prohazování.

Poznámka

Pole generovaná vymyšlací řadou jsou omezena na 1048576 hodnoty (2^20). Při pokusu o vygenerování většího pole s vymyšlovací řadou by došlo k chybě nebo zkrácené matici.

Alternativní syntaxe

T| make-series [Column=] Aggregation [default=DefaultValue] [, ...] oninrange(Sloupec osySpustit,Stop,Krok) [by [Column=] GroupExpression [, ...]]

Vygenerovaná řada z alternativní syntaxe se liší od hlavní syntaxe ve dvou aspektech:

  • Hodnota stop je včetně.
  • Binning osy indexu se generuje pomocí bin() a nikoli bin_at(), což znamená, že začátek nemusí být součástí vygenerované řady.

Doporučuje se používat hlavní syntaxi řady, a ne alternativní syntaxi.

Návraty

Vstupní řádky jsou uspořádány do skupin se stejnými hodnotami výrazůa počátečníhoby výrazu bin_at(kroku,)AxisColumn,. Pak se pro každou skupinu počítají zadané agregační funkce a pro každou skupinu se vytvoří řádek. Výsledek obsahuje by sloupce, sloupec AxisColumn a také alespoň jeden sloupec pro každou vypočítanou agregaci. (Agregace nad více sloupci nebo nečíselné výsledky nejsou podporované.)

Tento průběžný výsledek má tolik řádků, kolik je jedinečných kombinací počátečních by hodnotkroků,) a bin_at(AxisColumn,.

Nakonec řádky z mezivýsehlého výsledku uspořádané do skupin se stejnými hodnotami by výrazů a všechny agregované hodnoty jsou uspořádány do polí (hodnoty dynamic typu). Pro každou agregaci existuje jeden sloupec obsahující pole se stejným názvem. Poslední sloupec je pole obsahující hodnoty AxisColumn rozdělené do intervalů podle zadaného kroku.

Poznámka

I když můžete poskytnout libovolné výrazy pro agregační i seskupovací výrazy, je efektivnější používat jednoduché názvy sloupců.

Seznam agregačních funkcí

Funkce Description
avg() Vrátí průměrnou hodnotu ve skupině.
avgif() Vrátí průměr s predikátem skupiny.
count() Vrátí počet skupin.
countif() Vrátí počet s predikátem skupiny.
dcount() Vrátí přibližný jedinečný počet prvků skupiny.
dcountif() Vrátí přibližný počet jedinečných položek s predikátem skupiny.
max() Vrátí maximální hodnotu ve skupině.
maxif() Vrátí maximální hodnotu s predikátem skupiny.
min() Vrátí minimální hodnotu ve skupině.
minif() Vrátí minimální hodnotu s predikátem skupiny.
percentil() Vrátí hodnotu percentilu napříč skupinou.
take_any() Vrátí náhodnou neprázdnou hodnotu pro skupinu.
stdev() Vrátí směrodatnou odchylku napříč skupinou.
sum() Vrátí součet prvků v rámci skupiny.
sumif() Vrátí součet prvků s predikátem skupiny.
variance() Vrátí odchylku napříč skupinou.

Seznam funkcí analýzy řad

Funkce Description
series_fir() Použije filtr Konečný impulsní odpověď .
series_iir() Použije filtr nekonečné impulsní odpovědi .
series_fit_line() Najde přímku, která je nejlepší aproximací vstupu.
series_fit_line_dynamic() Najde čáru, která je nejlepší aproximací vstupu a vrátí dynamický objekt.
series_fit_2lines() Najde dva řádky, které jsou nejlepší aproximací vstupu.
series_fit_2lines_dynamic() Najde dvě čáry, které jsou nejlepší aproximací vstupu, vracející dynamický objekt.
series_outliers() Skóre bodů anomálií v řadě
series_periods_detect() Vyhledá nejvýznamnější období, která existují v časové řadě.
series_periods_validate() Zkontroluje, jestli časová řada obsahuje pravidelné vzory daných délek.
series_stats_dynamic() Vrátí více sloupců se společnou statistikou (min/max/variance/stdev/average).
series_stats() Vygeneruje dynamickou hodnotu se společnou statistikou (min/max/variance/stdev/average).

Úplný seznam funkcí analýzy řad najdete v tématu: Funkce zpracování řad.

Seznam interpolačních funkcí řad

Funkce Description
series_fill_backward() Provádí zpětnou interpolaci výplně chybějících hodnot v řadě.
series_fill_const() Nahradí chybějící hodnoty v řadě zadanou konstantní hodnotou.
series_fill_forward() Provádí interpolaci dopředného výplně chybějících hodnot v řadě.
series_fill_linear() Provádí lineární interpolaci chybějících hodnot v řadě.
  • Poznámka: Interpolační funkce ve výchozím nastavení předpokládají null jako chybějící hodnotu. Proto zadejte default=double(null) v make-series , pokud chcete použít interpolační funkce pro řadu.

Příklady

Tabulka, která zobrazuje pole čísel a průměrných cen jednotlivých druhů ovoce od jednotlivých dodavatelů objednaných podle časového razítka se zadaným rozsahem. Ve výstupu je řádek pro každou jedinečnou kombinaci ovoce a dodavatele. Výstupní sloupce zobrazují ovoce, dodavatele a pole: počet, průměr a celou časovou osu (od 1. 1. 2016 do 10. 1. 2016). Všechna pole jsou seřazena podle příslušného časového razítka a všechny mezery jsou vyplněny výchozími hodnotami (v tomto příkladu 0). Všechny ostatní vstupní sloupce se ignorují.

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

Tři tabulky. První obsahuje nezpracovaná data, druhá má pouze odlišné kombinace dodavatel-ovoce-datum a třetí obsahuje výsledky vymyšlací řady.

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 časové razítko
[ 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" ]

Když je vstup do make-series prázdný, výchozí chování make-series vytvoří prázdný výsledek.

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 

Výstup

Počet
0

Použití kind=nonempty v make-series vytvoří neprázdný výsledek výchozích hodnot:

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 

Výstup

avg_metric časové razítko
[
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"
]