Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Créez une série de valeurs agrégées spécifiées le long d'un axe donné.
Syntaxe
T| make-series [MakeSeriesParameters] [Column=] Aggregation [default=DefaultValue] [, ...] onAxisColumn [fromstart] [toend] stepstep [by [Column=] GroupExpression [, ...]]
En savoir plus sur les conventions de syntaxe.
Paramètres
| Nom | Catégorie | Requise | Descriptif |
|---|---|---|---|
| Colonne | string |
Le nom de la colonne de résultat. Prend par défaut un nom dérivé de l’expression. | |
| DefaultValue | scalaire | Valeur par défaut à utiliser à la place des valeurs manquantes. S’il n’existe aucune ligne avec des valeurs spécifiques d’AxisColumn et de GroupExpression, l’élément correspondant du tableau est affecté à une valeur DefaultValue. La valeur par défaut est 0. | |
| Agrégation | string |
✔️ | Appel d’une fonction d’agrégation comme count() ou avg(), avec des noms de colonne comme arguments. Voir la liste des fonctions d’agrégation. Seules les fonctions d'agrégation qui renvoient des résultats numériques peuvent être utilisées avec l'opérateur make-series. |
| AxisColumn | string |
✔️ | Colonne par laquelle la série est ordonnée. En règle générale, les valeurs de colonne sont de type datetime ou timespan tous les types numériques sont acceptés. |
| démarrer | scalaire | ✔️ | Valeur limite inférieure de AxisColumn pour chacune des séries à générer. Si le démarrage n’est pas spécifié, il s’agit du premier bac ou de la première étape, qui contient des données dans chaque série. |
| fin | scalaire | ✔️ | Valeur limite supérieure non inclusive de AxisColumn. Le dernier index de la série chronologique est plus petit que cette valeur et commence plus le multiple entier de l’étape inférieure à la fin. Si la fin n’est pas spécifiée, il s’agit de la limite supérieure de la dernière corbeille, ou de l’étape, qui contient des données par série. |
| étape | scalaire | ✔️ | Différence, ou taille de la classe, entre deux éléments consécutifs du tableau AxisColumn. Pour obtenir la liste des intervalles de temps possibles, consultez timespan. |
| Expression_groupe | expression sur les colonnes qui fournit un ensemble de valeurs distinctes. En règle générale, il s’agit d’un nom de colonne qui fournit déjà un ensemble limité de valeurs. | ||
| MakeSeriesParameters | Zéro ou plusieurs paramètres séparés par l’espace sous la forme de valeur de nom = qui contrôlent le comportement. Consultez paramètres make-series pris en charge. |
Notes
Les startparamètres et end les paramètres stepsont utilisés pour générer un tableau de valeurs AxisColumn. Le tableau se compose de valeurs entre start et end, avec la step valeur représentant la différence entre un élément de tableau et l’autre. Toutes les valeurs Aggregation sont respectivement classées dans ce tableau.
Paramètres make-series pris en charge
| Nom | Descriptif |
|---|---|
kind |
Produit un résultat par défaut quand l’entrée de l’opérateur make-series est vide. Valeur: nonempty |
hint.shufflekey=<key> |
La requête shufflekey partage la charge de requête sur les nœuds de cluster à l’aide d’une clé pour partitionner les données. Voir requête de lecture aléatoire |
Notes
Les tableaux générés par la série make sont limités à 1 048 576 valeurs (2^20). Toute tentative de génération d’un tableau plus grand avec make-series produit une erreur ou un tableau tronqué.
Syntaxe alternative
T| make-series [Colonne=] Agrégation [default=DefaultValue] [, ...] onAxisColumninrange(commencer,arrêter,pas) [by [Colonne=] 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 :
- La valeur stop est inclusive.
- Le binning de l’axe d’index est généré avec bin() et non bin_at(), ce qui signifie que le démarrage peut ne pas être inclus dans la série générée.
Nous vous recommandons d’utiliser la syntaxe principale de make-series et non la syntaxe alternative.
Retours
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). Ensuite, les fonctions d’agrégation spécifiées sont calculées sur chaque groupe, générant une ligne pour chaque groupe. Le résultat contient les colonnes by, la colonne AxisColumn et au moins une colonne pour chaque agrégation calculée. (Les agrégations de plusieurs colonnes ou de résultats non numériques ne sont pas prises en charge.)
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).
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). Pour chaque agrégation, il existe une colonne contenant le tableau correspondant du même nom. La dernière colonne est un tableau contenant les valeurs d’AxisColumn compartimentées en fonction de l’étape spécifiée.
Notes
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.
Liste des fonctions d'agrégation
| Fonction | Descriptif |
|---|---|
| avg() | Renvoie une valeur moyenne pour l'ensemble du groupe |
| avgif() | Renvoie une moyenne avec le prédicat du groupe |
| count() | Renvoie un nombre du groupe |
| countif() | Renvoie un nombre avec le prédicat du groupe |
| covariance() | Retourne l’exemple de covariance de deux variables aléatoires |
| covarianceif() | Retourne l’exemple de covariance de deux variables aléatoires avec prédicat |
| covariancep() | Retourne la covariance de population de deux variables aléatoires |
| covariancepif() | Retourne la covariance de population de deux variables aléatoires avec prédicat |
| dcount() | Retourne un nombre approximatif distinct des éléments de groupe |
| dcountif() | Renvoie un compte distinct approximatif avec le prédicat du groupe |
| max() | Retourne la valeur maximale dans l'ensemble du groupe |
| maxif() | Renvoie la valeur maximale avec le prédicat du groupe |
| min() | Retourne la valeur minimale dans l'ensemble du groupe |
| minif() | Renvoie la valeur minimale avec le prédicat du groupe |
| percentile() | Retourne la valeur de percentile dans l’ensemble du groupe |
| take_any() | Retourne une valeur non vide aléatoire pour le groupe |
| stdev() | Renvoie l'écart type dans l'ensemble du groupe |
| sum() | Renvoie la somme des éléments du groupe |
| sumif() | Renvoie la somme des éléments avec le prédicat du groupe |
| variance() | Retourne l’exemple de variance dans le groupe |
| varianceif() | Retourne l’exemple de variance entre le groupe avec le prédicat |
| variancep() | Retourne la variance de population entre le groupe |
| variancepif() | Retourne la variance de population entre le groupe avec le prédicat |
Liste des fonctions d'analyse de séries
| Fonction | Descriptif |
|---|---|
| series_fir() | Applique un filtre à réponse impulsionnelle finie |
| series_iir() | Applique un filtre à réponse impulsionnelle infinie |
| series_fit_line() | Recherche une ligne droite qui représente la meilleure approximation de l'entrée |
| series_fit_line_dynamic() | Recherche une ligne qui représente la meilleure approximation de l'entrée, en renvoyant l'objet dynamique |
| series_fit_2lines() | Recherche deux lignes qui représentent la meilleure approximation de l'entrée |
| series_fit_2lines_dynamic() | Recherche deux lignes qui représentent la meilleure approximation de l'entrée, en renvoyant l'objet dynamique |
| series_outliers() | Note les points d'anomalie dans une série |
| series_periods_detect() | Recherche les périodes les plus significatives qui existent dans une série chronologique |
| series_periods_validate() | Vérifie si une série chronologique contient des modèles périodiques de longueurs données |
| series_stats_dynamic() | Renvoie plusieurs colonnes comportant les statistiques courantes (min/max/variance/stdev/average) |
| series_stats() | Génère une valeur dynamique avec les statistiques courantes (min/max/variance/stdev/average) |
Pour une liste complète des fonctions d’analyse de séries, consultez : Fonctions de traitement des séries
Liste des fonctions d'interpolation des séries
| Fonction | Descriptif |
|---|---|
| series_fill_backward() | Effectue une interpolation de remplissage vers l'arrière des valeurs manquantes d'une série |
| series_fill_const() | Remplace les valeurs manquantes d'une série par une valeur constante spécifiée |
| series_fill_forward() | Effectue une interpolation de remplissage vers l'avant des valeurs manquantes d'une série |
| series_fill_linear() | Effectue une interpolation linéaire des valeurs manquantes d'une série |
- Remarque : par défaut, les fonctions d'interpolation considèrent
nullcomme une valeur manquante. Par conséquent, spécifiezdefault=double(null) dansmake-seriessi vous envisagez d'utiliser des fonctions d'interpolation pour la série.
Exemples
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. La sortie contient une ligne pour chaque combinaison de fruits et de fournisseurs. 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). 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). Toutes les autres colonnes d’entrée sont supprimées.
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
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 | horodatage |
|---|---|
| [ 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" ] |
Quand l’entrée de make-series est vide, le comportement par défaut de make-series produit un résultat vide.
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
Sortie
| Nombre |
|---|
| 0 |
L’utilisation kind=nonempty dans make-series produit un résultat non vide des valeurs par défaut :
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
Sortie
| avg_metric | horodatage |
|---|---|
| [ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1,0 ] |
[ « 2017-01-01T00:00:00.000000Z », « 2017-01-02T00:00:00.000000Z », « 2017-01-03T00:00:00.000000Z », « 2017-01-04T00:00:00.000000Z », « 2017-01-05T00:00:00.000000Z », « 2017-01-06T00:00:00.000000Z », « 2017-01-07T00:00:00.000000Z », « 2017-01-08T00:00:00.000000Z », « 2017-01-09T00:00:00.000000Z » ] |
Utilisation make-series et mv-expand remplissage des valeurs pour les enregistrements manquants :
let startDate = datetime(2025-01-06);
let endDate = datetime(2025-02-09);
let data = datatable(Time: datetime, Value: int, other:int)
[
datetime(2025-01-07), 10, 11,
datetime(2025-01-16), 20, 21,
datetime(2025-02-01), 30, 5
];
data
| make-series Value=sum(Value), other=-1 default=-2 on Time from startDate to endDate step 7d
| mv-expand Value, Time, other
| extend Time=todatetime(Time), Value=toint(Value), other=toint(other)
| project-reorder Time, Value, other
Sortie
| Heure | Valeur | autre |
|---|---|---|
| 2025-01-06T00:00:00Z | 10 | -1 |
| 2025-01-13T00:00:00Z | 20 | -1 |
| 2025-01-20T00:00:00Z | 0 | -2 |
| 2025-01-27T00:00:00Z | 30 | -1 |
| 2025-02-03T00:00:00Z | 0 | -2 |