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] stepschritt [by [Column=] GroupExpression [, ...]]

Parameter

Name type Erforderlich BESCHREIBUNG
Spalte Zeichenfolge Der Name für die Ergebnisspalte. Nimmt standardmäßig den vom Ausdruck abgeleiteten Namen an.
Defaultvalue Skalar Ein Standardwert, der anstelle fehlender Werte verwendet werden soll. Wenn keine Zeile mit bestimmten Werten von AxisColumn und GroupExpression vorhanden ist, wird dem entsprechenden Element des Arrays ein DefaultValue zugewiesen. Standard ist "0".
Aggregation Zeichenfolge Ein Aufruf einer Aggregationsfunktion, z count() . B. oder avg(), mit Spaltennamen als Argumente. 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 Zeichenfolge Die Spalte, nach der die Reihe sortiert wird. In der Regel sind die Spaltenwerte vom Typ datetime oder timespan , aber alle numerischen Typen werden akzeptiert.
start Skalar Der niedrige gebundene Wert der AxisColumn für jede der zu erstellenden Reihen. Wenn start nicht angegeben ist, ist dies der erste Bin oder Schritt, der Daten in jeder Reihe enthält.
end Skalar Der hoch gebundene, nicht inklusive Wert der AxisColumn.The high bound non-inclusive value of the AxisColumn. Der letzte Index der Zeitreihe ist kleiner als dieser Wert und wird gestartet plus ein ganzzahliges Vielfaches des Schritts , das kleiner als ende ist. Wenn end nicht angegeben ist, handelt es sich um die obere Grenze des letzten Bins oder Schritts, der Daten pro Reihe enthält.
Schritt Skalar Der Unterschied oder die Bin-Größe zwischen zwei aufeinanderfolgenden Elementen des AxisColumn-Arrays . Eine Liste der möglichen Zeitintervalle finden Sie unter Timespan.
GroupExpression Ein Ausdruck über den Spalten, der eine Reihe unterschiedlicher Werte 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=Value , die das Verhalten steuern. Weitere Informationen finden Sie unter Unterstützte Parameter für das Erstellen von Reihen.

Hinweis

Die Parameter start, end und step werden verwendet, um ein Array von AxisColumn-Werten zu erstellen. Das Array besteht aus Werten zwischen Start und Ende, wobei der Schrittwert den Unterschied zwischen einem Arrayelement zum nächsten darstellt. Alle Aggregation-Werte werden diesem Array entsprechend sortiert.

Unterstützte Serienparameter

Name BESCHREIBUNG
kind Erzeugt das Standardergebnis, wenn die Eingabe des Make-Series-Operators leer ist. Wert: nonempty
hint.shufflekey=<key> Die shufflekey Abfrage teilt die Abfragelast auf Clusterknoten, wobei ein Schlüssel zum Partitionieren von 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(Starten,Stoppen,Schritt) [by [Spalte=] 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 und nicht die alternative Syntax zu verwenden.

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 nicht numerische Ergebnisse 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 ihr Array mit demselben 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 Reihenanalysefunktionen finden Sie unter : Serienverarbeitungsfunktionen

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 leer make-series 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"
]