opérateur make-seriesmake-series operator

Créez une série de valeurs agrégées spécifiées le long d'un axe donné.Create series of specified aggregated values along a specified axis.

T | make-series sum(amount) default=0, avg(price) default=0 on timestamp from datetime(2016-01-01) to datetime(2016-01-10) step 1d by fruit, supplier

SyntaxeSyntax

T | make-series [MakeSeriesParamters] [Column =] Aggregation [default = DefaultValue] [, ...] on AxisColumn [from start] [to end] step step [by [Column =] GroupExpression [, ...]]T | make-series [MakeSeriesParamters] [Column =] Aggregation [default = DefaultValue] [, ...] on AxisColumn [from start] [to end] step step [by [Column =] GroupExpression [, ...]]

ArgumentsArguments

  • Column : nom facultatif d’une colonne de résultats.Column: Optional name for a result column. Prend par défaut un nom dérivé de l’expression.Defaults to a name derived from the expression.

  • DefaultValue : valeur par défaut utilisée à la place des valeurs manquantes.DefaultValue: Default value that will be used instead of absent values. En l'absence de ligne comportant des valeurs spécifiques pour AxisColumn et GroupExpression, une valeur par défaut (DefaultValue) est attribuée à l'élément correspondant du tableau dans les résultats.If there is no row with specific values of AxisColumn and GroupExpression, then in the results the corresponding element of the array will be assigned a DefaultValue. En l'absence de valeur DefaultValue, la valeur 0 est utilisée par défaut.If DefaultValue is omitted, then 0 is assumed.

  • Agrégation : appel d'une fonction d'agrégation telle que count() ou avg(), avec des noms de colonne comme arguments.Aggregation: A call to an aggregation function such as count() or avg(), with column names as arguments. Voir la liste des fonctions d’agrégation.See the list of aggregation functions. Seules les fonctions d'agrégation qui renvoient des résultats numériques peuvent être utilisées avec l'opérateur make-series.Only aggregation functions that return numeric results can be used with the make-series operator.

  • AxisColumn : colonne à partir de laquelle la série est classée.AxisColumn: A column on which the series will be ordered. Elle peut être considérée comme une chronologie, mais hormis datetime tous les types numériques sont acceptés.It could be considered as timeline, but besides datetime any numeric types are accepted.

  • start (facultatif) : valeur limite inférieure d'AxisColumn pour chacune des séries à générer.start: (optional) The low bound value of the AxisColumn for each of the series to be built. start, end et step sont utilisés pour créer un tableau de valeurs AxisColumn dans une plage donnée et en utilisant l'argument step spécifié.start, end, and step are used to build an array of AxisColumn values within a given range and using specified step. Toutes les valeurs Aggregation sont respectivement classées dans ce tableau.All Aggregation values are ordered respectively to this array. Ce tableau AxisColumn est également la dernière colonne de la sortie qui porte le même nom qu'AxisColumn.This AxisColumn array is also the last output column in the output that has the same name as AxisColumn. Si aucune valeur start n'est spécifiée, il s'agit de la première classe (step) qui contient des données dans chaque série.If a start value is not specified, the start is the first bin (step) which has data in each series.

  • end(facultatif) : valeur limite supérieure (non inclusive) d'AxisColumn.end: (optional) The high bound (non-inclusive) value of the AxisColumn. Le dernier index de la série chronologique est inférieur à cette valeur (et correspond à start plus un multiple entier de step inférieur à end).The last index of the time series is smaller than this value (and will be start plus integer multiple of step that is smaller than end). Si aucune valeur end n'est fournie, il s'agit de la limite supérieure de la dernière classe (step) qui contient des données pour chaque série.If end value is not provided, it will be the upper bound of the last bin (step) which has data per each series.

  • step : différence entre deux éléments consécutifs du tableau AxisColumn (à savoir, la taille de la classe).step: The difference between two consecutive elements of the AxisColumn array (that is, the bin size).

  • GroupExpression : expression sur les colonnes qui fournit un ensemble de valeurs distinctes.GroupExpression: An expression over the columns that provides a set of distinct values. En règle générale, il s’agit d’un nom de colonne qui fournit déjà un ensemble limité de valeurs.Typically it's a column name that already provides a restricted set of values.

  • MakeSeriesParameters : zéro ou plusieurs paramètres (séparés par des espaces), sous la forme Nom = Valeur, qui contrôlent le comportement.MakeSeriesParameters: Zero or more (space-separated) parameters in the form of Name = Value that control the behavior. Les paramètres suivants sont pris en charge :The following parameters are supported:

    NomName ValeursValues DescriptionDescription
    kind nonempty Produit un résultat par défaut lorsque l'entrée de l'opérateur make-series est videProduces default result when the input of make-series operator is empty

RetoursReturns

Les lignes d'entrée sont organisées en groupes qui ont les mêmes valeurs que les expressions by et que l'expression bin_at(AxisColumn, step, start).The input rows are arranged into groups having the same values of the by expressions and the bin_at(AxisColumn, step, start) expression. Ensuite, les fonctions d’agrégation spécifiées sont calculées sur chaque groupe, générant une ligne pour chaque groupe.Then the specified aggregation functions are computed over each group, producing a row for each group. Le résultat contient les colonnes by, la colonne AxisColumn et au moins une colonne pour chaque agrégation calculée.The result contains the by columns, AxisColumn column and also at least one column for each computed aggregate. (Agrégation qui ne prend pas en charge les colonnes multiples ou les résultats non numériques).(Aggregation that multiple columns or non-numeric results are not supported.)

Ce résultat intermédiaire comporte autant de lignes qu'il y a de combinaisons distinctes de valeurs by et bin_at(AxisColumn, step, start).This intermediate result has as many rows as there are distinct combinations of by and bin_at(AxisColumn, step, start) values.

Enfin, les lignes du résultat intermédiaire sont organisées en groupes qui ont les mêmes valeurs que les expressions by, et toutes les valeurs agrégées sont organisées en tableaux (valeurs de type dynamic).Finally the rows from the intermediate result arranged into groups having the same values of the by expressions and all aggregated values are arranged into arrays (values of dynamic type). Pour chaque agrégation, il existe une colonne contenant le tableau correspondant du même nom.For each aggregation, there is one column containing its array with the same name. La dernière colonne de la sortie de la fonction range contient toutes les valeurs d'AxisColumn.The last column in the output of the range function with all AxisColumn values. Sa valeur est reportée sur toutes les lignes.Its value is repeated for all rows.

En raison de la valeur par défaut des classes de remplissage manquantes, le tableau croisé dynamique qui en résulte comporte le même nombre de classes (c'est-à-dire, de valeurs agrégées) pour toutes les séries.Due to the fill missing bins by default value, the resulting pivot table has the same number of bins (that is, aggregated values) for all series

RemarqueNote

Bien que vous puissiez fournir des expressions arbitraires pour les expressions d'agrégation et de regroupement, il est plus efficace d'utiliser des noms de colonne simples.Although you can provide arbitrary expressions for both the aggregation and grouping expressions, it's more efficient to use simple column names.

Syntaxe alternativeAlternate Syntax

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

Une série générée à partir de la syntaxe alternative diffère d'une série générée à partir de la syntaxe principale par deux aspects :The generated series from the alternate syntax differs from the main syntax in two aspects:

  • La valeur stop est inclusive.The stop value is inclusive.
  • Le binning de l'axe d'indexation est généré avec bin() et non bin_at(), ce qui signifie que start peut ne pas être inclus dans la série générée.Binning the index axis is generated with bin() and not bin_at(), which means that start may not be included in the generated series.

Il est recommandé d'utiliser la syntaxe principale de make-series plutôt que la syntaxe alternative.It is recommended to use the main syntax of make-series and not the alternate syntax.

Distribution et lecture aléatoireDistribution and Shuffle

make-series prend en charge les indicateurs shufflekey summarize avec la syntaxe hint.shufflekey.make-series supports summarize shufflekey hints using the syntax hint.shufflekey.

Liste des fonctions d'agrégationList of aggregation functions

FonctionFunction DescriptionDescription
any()any() Renvoie une valeur non vide aléatoire pour le groupeReturns a random non-empty value for the group
avg()avg() Renvoie une valeur moyenne pour l'ensemble du groupeReturns an average value across the group
avgif()avgif() Renvoie une moyenne avec le prédicat du groupeReturns an average with the predicate of the group
count()count() Renvoie un nombre du groupeReturns a count of the group
countif()countif() Renvoie un nombre avec le prédicat du groupeReturns a count with the predicate of the group
dcount()dcount() Renvoie un nombre approximatif distinct des éléments de groupeReturns an approximate distinct count of the group elements
dcountif()dcountif() Renvoie un compte distinct approximatif avec le prédicat du groupeReturns an approximate distinct count with the predicate of the group
max()max() Retourne la valeur maximale dans l'ensemble du groupeReturns the maximum value across the group
maxif()maxif() Renvoie la valeur maximale avec le prédicat du groupeReturns the maximum value with the predicate of the group
min()min() Retourne la valeur minimale dans l'ensemble du groupeReturns the minimum value across the group
minif()minif() Renvoie la valeur minimale avec le prédicat du groupeReturns the minimum value with the predicate of the group
percentile()percentile() Retourne la valeur de percentile dans l’ensemble du groupeReturns the percentile value across the group
stdev()stdev() Renvoie l'écart type dans l'ensemble du groupeReturns the standard deviation across the group
sum()sum() Renvoie la somme des éléments du groupeReturns the sum of the elements within the group
sumif()sumif() Renvoie la somme des éléments avec le prédicat du groupeReturns the sum of the elements with the predicate of the group
variance()variance() Renvoie la variance dans l'ensemble du groupeReturns the variance across the group

Liste des fonctions d'analyse de sériesList of series analysis functions

FonctionFunction DescriptionDescription
series_fir()series_fir() Applique un filtre à réponse impulsionnelle finieApplies Finite Impulse Response filter
series_iir()series_iir() Applique un filtre à réponse impulsionnelle infinieApplies Infinite Impulse Response filter
series_fit_line()series_fit_line() Recherche une ligne droite qui représente la meilleure approximation de l'entréeFinds a straight line that is the best approximation of the input
series_fit_line_dynamic()series_fit_line_dynamic() Recherche une ligne qui représente la meilleure approximation de l'entrée, en renvoyant l'objet dynamiqueFinds a line that is the best approximation of the input, returning dynamic object
series_fit_2lines()series_fit_2lines() Recherche deux lignes qui représentent la meilleure approximation de l'entréeFinds two lines that are the best approximation of the input
series_fit_2lines_dynamic()series_fit_2lines_dynamic() Recherche deux lignes qui représentent la meilleure approximation de l'entrée, en renvoyant l'objet dynamiqueFinds two lines that are the best approximation of the input, returning dynamic object
series_outliers()series_outliers() Note les points d'anomalie dans une sérieScores anomaly points in a series
series_periods_detect()series_periods_detect() Recherche les périodes les plus significatives qui existent dans une série chronologiqueFinds the most significant periods that exist in a time series
series_periods_validate()series_periods_validate() Vérifie si une série chronologique contient des modèles périodiques de longueurs donnéesChecks whether a time series contains periodic patterns of given lengths
series_stats_dynamic()series_stats_dynamic() Renvoie plusieurs colonnes comportant les statistiques courantes (min/max/variance/stdev/average)Return multiple columns with the common statistics (min/max/variance/stdev/average)
series_stats()series_stats() Génère une valeur dynamique avec les statistiques courantes (min/max/variance/stdev/average)Generates a dynamic value with the common statistics (min/max/variance/stdev/average)

Pour une liste complète des fonctions d’analyse de séries, consultez : Fonctions de traitement des sériesFor a complete list of series analysis functions see: Series processing functions

Liste des fonctions d'interpolation des sériesList of series interpolation functions

FonctionFunction DescriptionDescription
series_fill_backward()series_fill_backward() Effectue une interpolation de remplissage vers l'arrière des valeurs manquantes d'une sériePerforms backward fill interpolation of missing values in a series
series_fill_const()series_fill_const() Remplace les valeurs manquantes d'une série par une valeur constante spécifiéeReplaces missing values in a series with a specified constant value
series_fill_forward()series_fill_forward() Effectue une interpolation de remplissage vers l'avant des valeurs manquantes d'une sériePerforms forward fill interpolation of missing values in a series
series_fill_linear()series_fill_linear() Effectue une interpolation linéaire des valeurs manquantes d'une sériePerforms linear interpolation of missing values in a series
  • Remarque : par défaut, les fonctions d'interpolation considèrent null comme une valeur manquante.Note: Interpolation functions by default assume null as a missing value. Par conséquent, spécifiez default=double(null) dans make-series si vous envisagez d'utiliser des fonctions d'interpolation pour la série.Therefore specify default=double(null) in make-series if you intend to use interpolation functions for the series.

ExempleExample

Table présentant des nombres et des prix moyens par fruit et par fournisseur, classés en fonction du timestamp avec la plage spécifiée.A table that shows arrays of the numbers and average prices of each fruit from each supplier ordered by the timestamp with specified range. La sortie contient une ligne pour chaque combinaison de fruits et de fournisseurs.There's a row in the output for each distinct combination of fruit and supplier. Les colonnes de la sortie présentent les fruits, les fournisseurs et les tableaux : nombre, moyenne et ensemble de la chronologie (du 2016-01-01 au 2016-01-10).The output columns show the fruit, supplier, and arrays of: count, average, and the whole timeline (from 2016-01-01 until 2016-01-10). Tous les tableaux sont classés en fonction du timestamp, et tous les espaces vides sont remplis avec les valeurs par défaut (0 dans cet exemple).All arrays are sorted by the respective timestamp and all gaps are filled with default values (0 in this example). Toutes les autres colonnes d’entrée sont supprimées.All other input columns are ignored.

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

Trois tables. La première répertorie les données brutes, la deuxième ne contient que des combinaisons distinctes de fournisseurs, de fruits et de dates, et le troisième contient les résultats de la fonction 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_metricavg_metric timestamptimestamp
[ 4.0, 3.0, 5.0, 0.0, 10.5, 4.0, 3.0, 8.0, 6.5 ][ 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" ][ "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" ]

Lorsque l'entrée de make-series est vide, le comportement par défaut de make-series produit également un résultat vide.When the input to make-series is empty, the default behavior of make-series produces an empty result as well.

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
| limit 0
| make-series avg(metric) default=1.0 on timestamp from stime to etime step interval 
| count 
NombreCount
00

L'utilisation de kind=nonempty dans make-series produit un résultat non vide pour les valeurs par défaut :Using kind=nonempty in make-series will produce a non-empty result of the default values:

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
| limit 0
| make-series kind=nonempty avg(metric) default=1.0 on timestamp from stime to etime step interval 
avg_metricavg_metric timestamptimestamp
[[
1.0,1.0,
1.0,1.0,
1.0,1.0,
1.0,1.0,
1.0,1.0,
1.0,1.0,
1.0,1.0,
1.0,1.0,
1.01.0
]]
[[
"2017-01-01T00:00:00.0000000Z","2017-01-01T00:00:00.0000000Z",
"2017-01-02T00:00:00.0000000Z","2017-01-02T00:00:00.0000000Z",
"2017-01-03T00:00:00.0000000Z","2017-01-03T00:00:00.0000000Z",
"2017-01-04T00:00:00.0000000Z","2017-01-04T00:00:00.0000000Z",
"2017-01-05T00:00:00.0000000Z","2017-01-05T00:00:00.0000000Z",
"2017-01-06T00:00:00.0000000Z","2017-01-06T00:00:00.0000000Z",
"2017-01-07T00:00:00.0000000Z","2017-01-07T00:00:00.0000000Z",
"2017-01-08T00:00:00.0000000Z","2017-01-08T00:00:00.0000000Z",
"2017-01-09T00:00:00.0000000Z""2017-01-09T00:00:00.0000000Z"
]]