toscalar()
傳回評估運算式的純量常數值。
此函數適用於需要暫存計算的查詢。 例如,計算事件的總計數,然後使用結果來篩選群組,而群組超過所有事件的特定百分比。
任何兩個陳述式均必須以分號分隔。
語法
toscalar(
expression)
深入瞭解 語法慣例。
參數
名稱 | 類型 | 必要 | Description |
---|---|---|---|
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 |
範例
將 Start
、End
和 Step
評估為純量常數,並使用 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 |
下列範例示範如何使用 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 |
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應