make-series-operatorn

Skapa en serie med angivna aggregerade värden längs en angiven axel.

Syntax

T| make-series [MakeSeriesParameters] [Column=] Aggregation [default=DefaultValue] [, ...] onAxisColumn [fromstart] [toend] stepstep [by [Column=] GroupExpression [, ...]]

Läs mer om syntaxkonventioner.

Parametrar

Namn Typ Obligatorisk Beskrivning
Kolumn string Namnet på resultatkolumnen. Standardvärdet är ett namn som härletts från uttrycket.
Standardvärde Skalär Ett standardvärde som ska användas i stället för saknade värden. Om det inte finns någon rad med specifika värden för AxisColumn och GroupExpression tilldelas motsvarande element i matrisen en DefaultValue. Standardvärdet är 0.
Aggregering string ✔️ Ett anrop till en sammansättningsfunktion, till exempel count() eller avg(), med kolumnnamn som argument. Se listan över aggregeringsfunktioner. Endast aggregeringsfunktioner som returnerar numeriska resultat kan användas med operatorn make-series .
AxisColumn string ✔️ Den kolumn som serien ska sorteras efter. Vanligtvis är kolumnvärdena av typen datetime eller timespan men alla numeriska typer accepteras.
Börja Skalär ✔️ Det låga gränsvärdet för AxisColumn för var och en av de serier som ska skapas. Om start inte anges är det det första intervallet eller steget som innehåller data i varje serie.
Slutet Skalär ✔️ Det högbundna icke-inklusivvärdet för AxisColumn. Det sista indexet i tidsserien är mindre än det här värdet och kommer att starta plus heltalsmultipel som är mindre än slutet. Om end inte anges är det den övre gränsen för den sista lagerplatsen, eller steget, som har data per varje serie.
Steg Skalär ✔️ Skillnaden, eller diskretiseringsstorleken, mellan två efterföljande element i arrayen AxisColumn . En lista över möjliga tidsintervall finns i tidsintervall.
GroupExpression Ett uttryck över kolumnerna som tillhandahåller en uppsättning distinkta värden. Vanligtvis är det ett kolumnnamn som redan innehåller en begränsad uppsättning värden.
MakeSeriesParameters Noll eller flera blankstegsavgränsade parametrar i form av Namnvärde= som styr beteendet. Se Stöd för att skapa serieparametrar.

Anteckning

Parametrarna start, slut och steg används för att skapa en matris med AxisColumn-värden . Matrisen består av värden mellan start och slut, där stegvärdet representerar skillnaden mellan ett matriselement till nästa. Alla aggregeringsvärden sorteras till den här matrisen.

Stöd för att skapa serieparametrar

Name Beskrivning
kind Ger standardresultat när indata för make-series-operatorn är tom. Värde: nonempty
hint.shufflekey=<key> Frågan shufflekey delar frågebelastningen på klusternoder med hjälp av en nyckel för att partitioneras data. Se shuffle-fråga

Anteckning

Matriserna som genereras av make-series är begränsade till 1048576 värden (2^20). Om du försöker generera en större matris med make-series skulle det resultera i antingen ett fel eller en trunkerad matris.

Alternativ syntax

T| make-series [Column=] Aggregation [default=DefaultValue] [, ...] onAxisColumninrange(Börja,Stanna,Steg) [by [Kolumn=] GroupExpression [, ...]]

Den genererade serien från den alternativa syntaxen skiljer sig från huvudsyntaxen i två aspekter:

  • Stoppvärdet är inkluderande.
  • Gruppering av indexaxeln genereras med bin() och inte bin_at(), vilket innebär att start kanske inte ingår i den genererade serien.

Vi rekommenderar att du använder huvudsyntaxen för make-series och inte den alternativa syntaxen.

Returer

Indataraderna är ordnade i grupper som har samma värden för uttrycken bybin_at( ochstartuttrycket)för AxisColumn-steget,,. Sedan beräknas de angivna aggregeringsfunktionerna över varje grupp och skapar en rad för varje grupp. Resultatet innehåller kolumnerna by , kolumnen AxisColumn och även minst en kolumn för varje beräknad aggregering. (Sammansättningar över flera kolumner eller icke-numeriska resultat stöds inte.)

Det här mellanliggande resultatet har lika många rader som det finns distinkta kombinationer av by och bin_at(AxisColumn-stegstartvärden,),.

Slutligen ordnas raderna från det mellanliggande resultatet i grupper som har samma värden för uttrycken by och alla aggregerade värden i matriser (värden av dynamic typen). För varje aggregering finns det en kolumn som innehåller dess matris med samma namn. Den sista kolumnen är en matris som innehåller värdena för AxisColumn binned enligt det angivna steget.

Anteckning

Även om du kan ange godtyckliga uttryck för både sammansättnings- och grupperingsuttrycken är det mer effektivt att använda enkla kolumnnamn.

Lista över sammansättningsfunktioner

Funktion Beskrivning
avg() Returnerar ett genomsnittsvärde i hela gruppen
avgif() Returnerar ett medelvärde med predikatet för gruppen
count() Returnerar ett antal av gruppen
countif() Returnerar ett antal med predikatet för gruppen
dcount() Returnerar ett ungefärligt distinkt antal gruppelement
dcountif() Returnerar ett ungefärligt distinkt antal med predikatet för gruppen
max() Returnerar det maximala värdet i gruppen
maxif() Returnerar det maximala värdet med predikatet för gruppen
min() Returnerar minimivärdet i gruppen
minif() Returnerar minimivärdet med predikatet för gruppen
percentile() Returnerar percentilvärdet i gruppen
take_any() Returnerar ett slumpmässigt värde som inte är tomt för gruppen
stdev() Returnerar standardavvikelsen i gruppen
sum() Returnerar summan av elementen i gruppen
sumif() Returnerar summan av elementen med predikatet för gruppen
variance() Returnerar variansen i gruppen

Lista över serieanalysfunktioner

Funktion Beskrivning
series_fir() Använder Finite Impulse Response-filter
series_iir() Använder Infinite Impulse Response-filter
series_fit_line() Hittar en rät linje som är den bästa uppskattningen av indata
series_fit_line_dynamic() Hittar en linje som är den bästa uppskattningen av indata och returnerar dynamiskt objekt
series_fit_2lines() Hittar två rader som är den bästa uppskattningen av indata
series_fit_2lines_dynamic() Hittar två rader som är den bästa uppskattningen av indata och returnerar dynamiska objekt
series_outliers() Poäng för avvikelsepunkter i en serie
series_periods_detect() Hittar de viktigaste perioderna som finns i en tidsserie
series_periods_validate() Kontrollerar om en tidsserie innehåller periodiska mönster för angivna längder
series_stats_dynamic() Returnera flera kolumner med gemensam statistik (min/max/varians/stdev/average)
series_stats() Genererar ett dynamiskt värde med vanlig statistik (min/max/variance/stdev/average)

En fullständig lista över serieanalysfunktioner finns i: Seriebearbetningsfunktioner

Lista över serieinterpoleringsfunktioner

Funktion Beskrivning
series_fill_backward() Utför bakåtfyllningsinterpolation av saknade värden i en serie
series_fill_const() Ersätter saknade värden i en serie med ett angivet konstantvärde
series_fill_forward() Utför vidarebefordrande fyllningsinterpolation av saknade värden i en serie
series_fill_linear() Utför linjär interpolering av saknade värden i en serie
  • Obs! Interpolationsfunktioner förutsätter null som standard att det saknas ett värde. Ange default= därför double(null) i make-series om du tänker använda interpoleringsfunktioner för serien.

Exempel

En tabell som visar matriser med tal och genomsnittliga priser för varje frukt från varje leverantör som sorteras efter tidsstämpeln med angivet intervall. Det finns en rad i utdata för varje distinkt kombination av frukt och leverantör. Utdatakolumnerna visar frukt, leverantör och matriser för: antal, medelvärde och hela tidslinjen (från 2016-01-01 till 2016-01-10). Alla matriser sorteras efter respektive tidsstämpel och alla luckor fylls med standardvärden (0 i det här exemplet). Alla andra indatakolumner ignoreras.

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 tabeller. Den första listar rådata, den andra har endast distinkta kombinationer av leverantörs-fruktdatum och den tredje innehåller resultat från 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:000: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" ]

När indata till make-series är tomma ger standardbeteendet make-series för ett tomt resultat.

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 

Resultat

Antal
0

Om du använder kind=nonempty i make-series genereras ett icke-tomt resultat av standardvärdena:

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 

Resultat

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