toscalar()

評価された式のスカラー定数値を返します。

この関数は、クエリの計算を段階分けする必要がある場合に役立ちます。 たとえば、イベントの総数を計算してから、その結果を使用して全イベントの一定割合を超えるグループをフィルター処理する場合などです。

2 つのステートメントは、セミコロンで区切る必要があります。

構文

toscalar(expression)

構文規則について詳しく知る。

パラメーター

名前 必須 説明
式 (expression) string ✔️ スカラー値に変換する値。

戻り値

評価対象の式のスカラー定数値。 結果がテーブル形式の場合、変換には最初の列と最初の行が使用されます。

ヒント

toscalar() を使用する場合、クエリを読みやすくするために let ステートメントを使用することをお勧めします。

制限事項

toscalar() は、各行に関数を適用するシナリオでは適用できません。 これは、クエリの実行中に関数を一定の回数だけ計算できるためです。 通常、この制限に達すると、次のエラーが返されます。 can't use '<column name>' as it is defined outside its row-context scope.

次の例では、クエリはエラーで失敗します。

'toscalar': can't use 'x' as it is defined outside its row-context scope.

let _dataset1 = datatable(x:long)[1,2,3,4,5];
let _dataset2 = datatable(x:long, y:long) [ 1, 2, 3, 4, 5, 6];
let tg = (x_: long)
{
    toscalar(_dataset2| where x == x_ | project y);
};
_dataset1
| extend y = tg(x)

このエラーは、次の例のように、 演算子を join 使用して軽減できます。

let _dataset1 = datatable(x: long)[1, 2, 3, 4, 5];
let _dataset2 = datatable(x: long, y: long) [1, 2, 3, 4, 5, 6];
_dataset1
| join (_dataset2) on x 
| project x, y

出力

x y
1 2
3 4
5 6

StartEndStep をスカラー定数として評価してから、結果を使用して range の評価を行います。

let Start = toscalar(print x=1);
let End = toscalar(range x from 1 to 9 step 1 | count);
let Step = toscalar(2);
range z from Start to End step Step | extend start=Start, end=End, step=Step

出力

z start end ステップ
1 1 9 2
3 1 9 2
5 1 9 2
7 1 9 2
9 1 9 2

次の例では、式を 1 回正確に計算するように式を "修正" する方法を toscalar 示します。 この場合、計算対象の式から返される値は評価のたびに異なります。

let g1 = toscalar(new_guid());
let g2 = new_guid();
range x from 1 to 2 step 1
| extend x=g1, y=g2

出力

x y
e6a15e72-756d-4c93-93d3-fe85c18d19a3 c2937642-0d30-4b98-a157-a6706e217620
e6a15e72-756d-4c93-93d3-fe85c18d19a3 c6a48cb3-9f98-4670-bf5b-589d0e0dcaf5