make-series-Operator

Erstellt eine Reihe angegebener aggregierter Werte entlang einer angegebenen Achse.

Syntax

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

Erfahren Sie mehr über Syntaxkonventionen.

Parameter

Name Typ Erforderlich BESCHREIBUNG
Spalte string Der Name der Ergebnisspalte. Nimmt standardmäßig den vom Ausdruck abgeleiteten Namen an.
DefaultValue Skalar Ein Standardwert, der anstelle fehlender Werte verwendet werden soll. Ist keine Zeile mit bestimmten AxisColumn- und GroupExpression-Werten vorhanden, wird dem entsprechenden Element des Arrays ein DefaultValue zugewiesen. Standard ist "0".
Aggregation string ✔️ Ein Aufruf einer Aggregationsfunktion, z. B. count() oder avg(), mit Spaltennamen als Argumenten. Weitere Informationen finden Sie in der Liste der Aggregationsfunktionen. Nur Aggregationsfunktionen, die numerische Ergebnisse zurückgeben, können mit dem make-series-Operator verwendet werden.
AxisColumn string ✔️ Die Spalte, anhand derer die Reihe sortiert wird. Üblicherweise sind die Spaltenwerte vom Typ datetime oder timespan, aber es werden alle numerischen Typen akzeptiert.
start Skalar ✔️ Der untere gebundene Wert von AxisColumn für jede der zu erstellenden Reihen. Wenn start nicht angegeben ist, ist dies das erste Intervall (step) jeder Reihe, das Daten enthält.
end Skalar ✔️ Der obere gebundene, nicht inklusive Wert von AxisColumn. Der letzte Index der Zeitreihe ist kleiner als dieser Wert und ist gleich start plus einem ganzzahligen Vielfachen von step, das kleiner ist als end. Wenn end nicht angegeben ist, ist dies die Obergrenze des letzten Intervalls (step) jeder Reihe, das Daten enthält.
step Skalar ✔️ Der Unterschied bzw. die Größe des Intervalls zwischen zwei aufeinander folgenden Elementen des AxisColumn-Arrays. Eine Liste der möglichen Zeitintervalle finden Sie unter timespan.
GroupExpression Ein Ausdruck für die Spalten, der einen Satz von unterschiedlichen Werten bereitstellt. Hierbei handelt es sich in der Regel um einen Spaltennamen, der bereits einen eingeschränkten Satz von Werten bereitstellt.
MakeSeriesParameters Null oder mehr (durch Leerzeichen getrennte) Parameter in Form von Name=Wert, die das Verhalten steuern. Informationen finden Sie unter unterstützte make-series-Parameter.

Hinweis

Die Parameter start, end und step werden zum Erstellen eines Arrays aus AxisColumn-Werten verwendet. Das Array besteht aus Werten zwischen start und end, wobei der Wert für step den Unterschied zwischen einem Arrayelement und dem nächsten darstellt. Alle Aggregation-Werte werden diesem Array entsprechend sortiert.

Unterstützte make-series-Parameter

Name BESCHREIBUNG
kind Generiert ein Standardergebnis, wenn die Eingabe des make-series-Operators leer ist. Wert: nonempty
hint.shufflekey=<key> Die shufflekey-Abfrage teilt die Abfragelast auf Clusterknoten auf, wobei ein Schlüssel zum Partitionieren der Daten verwendet wird. Weitere Informationen finden Sie unter Shuffleabfrage

Hinweis

Die durch „make-series“ generierten Arrays sind auf 1.048.576 Werte (2^20) beschränkt. Der Versuch, ein größeres Array mit „make-series“ zu generieren, führt entweder zu einem Fehler oder zu einem abgeschnittenen Array.

Alternativer Syntax

T| make-series [Column=] Aggregation [default=DefaultValue] [, ...] onAxisColumninrange(start,stop,step) [by [Column=] GroupExpression [, ...]]

Die generierten Reihen aus der alternativen Syntax unterscheiden sich von der Hauptsyntax in zwei Aspekten:

  • Der stop-Wert ist inklusiv.
  • Die Quantisierung der Indexachse wird mit bin() und nicht mit bin_at() generiert, was bedeutet, dass start in der generierten Reihe möglicherweise nicht enthalten ist.

Es wird empfohlen, die Hauptsyntax von make-series zu verwenden, nicht die alternative Syntax.

Gibt zurück

Die Eingabezeilen werden in Gruppen angeordnet, die dieselben Werte wie die by -Ausdrücke und der bin_at(AxisColumn,step,start)-Ausdruck aufweisen. Anschließend werden die angegebenen Aggregationsfunktionen über jede Gruppe berechnet, dabei wird eine Zeile für jede Gruppe erzeugt. Das Ergebnis enthält die by -Spalten, die Spalte AxisColumn und auch mindestens eine Spalte für jedes berechnete Aggregat. (Aggregationen über mehrere Spalten oder mit nicht numerischen Ergebnissen werden nicht unterstützt.)

Dieses Zwischenergebnis weist so viele Zeilen auf, wie es unterschiedliche Kombinationen aus by und bin_at(AxisColumn,step,start)-Werten gibt.

Schließlich werden die Zeilen aus dem Zwischenergebnis in Gruppen angeordnet, die dieselben Werte wie die by-Ausdrücke aufweisen, und alle aggregierten Werte werden in Arrays (Werte vom dynamic-Typ) angeordnet. Für jede Aggregation gibt es eine Spalte, die das zugehörige Array mit dem entsprechenden Namen enthält. Die letzte Spalte ist ein Array, das die Werte von AxisColumn enthält, die gemäß dem angegebenen Schritt klassifiziert sind.

Hinweis

Auch wenn Sie beliebige Ausdrücke für die Aggregation und Gruppierung von Ausdrücken bereitstellen können, ist es effizienter, einfache Spaltennamen zu verwenden.

Liste der Aggregationsfunktionen

Funktion BESCHREIBUNG
avg() Gibt einen Durchschnittswert für die Gruppe zurück.
avgif() Gibt einen Durchschnitt mit dem Prädikat der Gruppe zurück.
count() Gibt eine Anzahl der Gruppe zurück.
countif() Gibt eine Anzahl mit dem Prädikat der Gruppe zurück.
dcount() Gibt eine ungefähre eindeutige Anzahl der Gruppenelemente zurück.
dcountif() Gibt eine ungefähre eindeutige Anzahl mit dem Prädikat der Gruppe zurück.
max() Gibt den Höchstwert in der Gruppe zurück.
maxif() Gibt den Maximalwert mit dem Prädikat der Gruppe zurück.
min() Gibt den Mindestwert in der Gruppe zurück.
minif() Gibt einen Minimalwert mit dem Prädikat der Gruppe zurück.
percentile() Gibt den Perzentilwert für die Gruppe zurück.
take_any() Gibt einen zufälligen, nicht leeren Wert für die Gruppe zurück.
stdev() Gibt die Standardabweichung für die Gruppe zurück.
sum() Gibt die Summe der Elemente in der Gruppe zurück.
sumif() Gibt die Summe der Elemente mit dem Prädikat der Gruppe zurück.
variance() Gibt die Varianz für die Gruppe zurück.

Liste der Analysefunktionen für Zeitreihen

Funktion BESCHREIBUNG
series_fir() Wendet einen FIR-Filter (Finite Impulse Response) an.
series_iir() Wendet einen IIR-Filter (Infinite Impulse Response) an.
series_fit_line() Ermittelt eine gerade Linie, die die beste Näherung der Eingabe darstellt.
series_fit_line_dynamic() Ermittelt eine Linie, die die beste Näherung der Eingabe darstellt, und gibt ein dynamisches Objekt zurück.
series_fit_2lines() Ermittelt zwei Linien, die die beste Näherung der Eingabe darstellen.
series_fit_2lines_dynamic() Ermittelt zwei Linien, die die beste Näherung der Eingabe sind, und gibt ein dynamisches Objekt zurück.
series_outliers() Bewertet Anomaliepunkte in einer Reihe.
series_periods_detect() Ermittelt die wichtigsten Punkte, die in einer Zeitreihe vorhanden sind.
series_periods_validate() Überprüft, ob eine Zeitreihe periodische Muster mit den angegebenen Längen enthält.
series_stats_dynamic() Gibt mehrere Spalten mit den allgemeinen Statistiken zurück (min/max/variance/stdev/average).
series_stats() Generiert einen dynamischen Wert mit den allgemeinen Statistiken (min/max/variance/stdev/average).

Eine vollständige Liste der Analysefunktionen für Reihen finden Sie unter Funktionen für die Zeitreihenverarbeitung.

Liste der Reiheninterpolationsfunktionen

Funktion BESCHREIBUNG
series_fill_backward() Führt eine Rückwärtsfüllinterpolation von fehlenden Werten in einer Reihe aus.
series_fill_const() Ersetzt fehlende Werte in einer Reihe durch einen angegebenen konstanten Wert.
series_fill_forward() Führt eine Vorwärtsfüllinterpolation von fehlenden Werten in einer Reihe aus.
series_fill_linear() Führt eine lineare Interpolation von fehlenden Werten in einer Reihe aus.
  • Hinweis: Interpolationsfunktionen nehmen standardmäßig null als fehlenden Wert an. Geben Sie daher default=double(null) in make-series an, wenn Sie beabsichtigen, Interpolationsfunktionen für die Reihe zu verwenden.

Beispiele

Eine Tabelle, die Arrays der Zahlen und Durchschnittspreise der einzelnen Früchte von jedem Lieferanten anzeigt, geordnet nach dem Zeitstempel mit dem angegebenen Bereich. Es gibt eine Zeile in der Ausgabe für jede einzelne Kombination von Obst und Lieferant. In den Ausgabespalten werden die Früchte, der Lieferant und die folgenden Arrays angezeigt: count, average und die gesamte Timeline (von 2016-01-01 bis 2016-01-10). Alle Arrays werden nach dem entsprechenden Zeitstempel sortiert, und alle Lücken werden mit Standardwerten aufgefüllt (in diesem Beispiel 0). Alle anderen Eingabespalten werden ignoriert.

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

Drei Tabellen. Die erste Tabelle listet Rohdaten auf, die zweite enthält nur unterschiedliche Kombinationen aus Lieferant, Obst und Datum, und die dritte die Ergebnisse von 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" ]

Wenn die Eingabe für make-series leer ist, erzeugt das Standardverhalten von make-series ein leeres Ergebnis.

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 

Ausgabe

Anzahl
0

Die Verwendung von kind=nonempty in make-series führt zu einem nicht leeren Ergebnis der Standardwerte:

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 

Ausgabe

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