Partager via


opérateur make-series

S’applique à : ✅Microsoft Fabric

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 null comme une valeur manquante. Par conséquent, spécifiez default=double(null) dans make-series si 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

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_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