次の方法で共有


range operator

Applies to: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

値が含まれる 1 列のテーブルを生成します。

Note

この演算子は表形式の入力を受け取りません。

Syntax

range columnNamefromstarttostopstepstep

Learn more about syntax conventions.

Parameters

Name タイプ Required Description
columnName string ✔️ 出力テーブル内の単一列の名前。
start int、long、real、datetime、または timespan ✔️ 出力内の最小の値。
stop int、long、real、datetime、または 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、または timespan ✔️ 2 つの連続する値の差。

Note

値はどのテーブルの列も参照できません。 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

このセクションの例では、構文を使用して作業を開始する方法を示します。

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. ワークスペース内のテーブルと一致するように、クエリ例のテーブル名を変更する必要がある場合があります。

過去 7 日間の範囲

次の例では、過去 7 日間に 1 日に 1 回、現在のタイム スタンプのエントリを含むテーブルを作成します。

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

異なる停止時間を組み合わせる

次の例は、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

パラメーターを使用した範囲

次の例では、パラメーターと共に range 演算子を使用する方法を示します。この演算子は、テーブルとして拡張および使用されます。

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

次の例では、型が Stepslong という 1 つの列を持つテーブルを作成し、1 から 8 の値を 3 ずつインクリメントします。

range Steps from 1 to 8 step 3

Output

Steps
1
4
7

時間範囲のトレース

次の例は、range 演算子を使用して、ソース データに値がないゼロを導入するために使用されるディメンション テーブルを作成する方法を示しています。 過去 4 時間のタイムスタンプを取得し、1 分間隔ごとにトレースをカウントします。 特定の間隔のトレースがない場合、カウントは 0 になります。

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