Partager via


range operator

Applies to: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

Génère une table de valeurs à une seule colonne.

Note

Cet opérateur ne prend pas d’entrée tabulaire.

Syntax

range columnNamefromstarttostopstepstep

Learn more about syntax conventions.

Parameters

Name Type Required Description
columnName string ✔️ Nom de la colonne unique dans la table de sortie.
start int, long, real, datetime ou timespan ✔️ Valeur la plus petite dans la sortie.
stop int, long, real, datetime ou timespan ✔️ The highest value being generated in the output or a bound on the highest value if step is over this value.
step int, long, real, datetime ou timespan ✔️ Différence entre deux valeurs consécutives.

Note

Les valeurs ne peuvent pas référencer les colonnes d’une table. If you want to compute the range based on an input table, use the range function potentially with the mv-expand operator.

Returns

A table with a single column called columnName, whose values are start, start+step, ... up to and until stop.

Examples

L’exemple de cette section montre comment utiliser la syntaxe pour vous aider à commencer.

The examples in this article use publicly available tables in the help cluster, such as the StormEvents table in the Samples database.

The examples in this article use publicly available tables, such as the Weather table in the Weather analytics sample gallery. Vous devrez peut-être modifier le nom de la table dans l’exemple de requête pour qu’elle corresponde à la table de votre espace de travail.

Plage au cours des sept derniers jours

L’exemple suivant crée une table avec des entrées pour l’horodatage actuel étendu au cours des sept derniers jours, une fois par jour.

range LastWeek from ago(7d) to now() step 1d

Output

LastWeek
2015-12-05 09:10:04.627
2015-12-06 09:10:04.627
...
2015-12-12 09:10:04.627

Combiner des heures d’arrêt différentes

L’exemple suivant montre comment étendre les plages pour utiliser plusieurs arrêts à l’aide de l’opérateur union.

let Range1 = range Time from datetime(2024-01-01) to datetime(2024-01-05) step 1d;
let Range2 = range Time from datetime(2024-01-06) to datetime(2024-01-10) step 1d;
union Range1, Range2
| order by Time asc

Output

Time
2024-01-04 00:00:00.0000000
2024-01-05 00:00:00.0000000
2024-01-06 00:00:00.0000000
2024-01-07 00:00:00.0000000
2024-01-08 00:00:00.0000000
2024-01-09 00:00:00.0000000
2024-01-10 00:00:00.0000000

Plage à l’aide de paramètres

L’exemple suivant montre comment utiliser l’opérateur range avec des paramètres, qui sont ensuite étendus et consommés en tant que table.

let toUnixTime = (dt:datetime) 
{ 
    (dt - datetime(1970-01-01)) / 1s 
};
let MyMonthStart = startofmonth(now()); //Start of month
let StepBy = 4.534h; //Supported timespans
let nn = 64000; // Row Count parametrized
let MyTimeline = range MyMonthHour from MyMonthStart to now() step StepBy
| extend MyMonthHourinUnixTime = toUnixTime(MyMonthHour), DateOnly = bin(MyMonthHour,1d), TimeOnly = MyMonthHour - bin(MyMonthHour,1d)
; MyTimeline | order by MyMonthHour asc | take nn

Output

MyMonthHour MyMonthHourinUnixTime DateOnly TimeOnly
2023-02-01 00:00:00.0000000 1675209600 2023-02-01 00:00:00.0000000
2023-02-01 04:32:02.4000000 1675225922.4 2023-02-01 00:00:00.0000000
2023-02-01 09:04:04.8000000 1675242244.8 2023-02-01 00:00:00.0000000
2023-02-01 13:36:07.2000000 1675258567.2 2023-02-01 00:00:00.0000000
... ... ... ...

Incremented steps

L’exemple suivant crée une table avec une seule colonne appelée Steps dont le type est long et génère des valeurs comprises entre un et huit incrémentés par trois.

range Steps from 1 to 8 step 3

Output

Steps
1
4
7

Traces sur un intervalle de temps

L’exemple suivant montre comment l’opérateur range peut être utilisé pour créer une table de dimension utilisée pour introduire des zéros où les données sources n’ont aucune valeur. Il faut des horodatages des quatre dernières heures et compte les traces pour chaque intervalle d’une minute. Lorsqu’il n’y a aucune trace pour un intervalle spécifique, le nombre est égal à zéro.

range TIMESTAMP from ago(4h) to now() step 1m
| join kind=fullouter
  (Traces
      | where TIMESTAMP > ago(4h)
      | summarize Count=count() by bin(TIMESTAMP, 1m)
  ) on TIMESTAMP
| project Count=iff(isnull(Count), 0, Count), TIMESTAMP
| render timechart