toscalar()
Vrátí skalární konstantní hodnotu vyhodnoceného výrazu.
Tato funkce je užitečná pro dotazy, které vyžadují fázované výpočty. Můžete například vypočítat celkový počet událostí a výsledek použít k filtrování skupin, které překračují určité procento všech událostí.
Všechny dva příkazy musí být odděleny středníkem.
Syntax
toscalar(
Výraz)
Přečtěte si další informace o konvencích syntaxe.
Parametry
Název | Typ | Vyžadováno | Popis |
---|---|---|---|
expression | string |
✔️ | Hodnota, která se má převést na skalární hodnotu. |
Návraty
Skalární konstantní hodnota vyhodnoceného výrazu. Pokud je výsledek tabulkový, přepočítá se první sloupec a první řádek.
Tip
Při použití toscalar()
příkazu můžete použít příkaz let pro čitelnost dotazu.
Omezení
toscalar()
nelze použít ve scénáři, který funkci použije na každém řádku. Je to proto, že funkci je možné vypočítat pouze konstantní počet během provádění dotazu.
Obvykle se při dosažení tohoto omezení vrátí následující chyba: can't use '<column name>' as it is defined outside its row-context scope.
V následujícím příkladu dotaz selže s chybou:
'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)
Toto selhání lze zmírnit pomocí operátoru join
, jako v následujícím příkladu:
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
Výstup
x | y |
---|---|
1 | 2 |
3 | 4 |
5 | 6 |
Příklady
Vyhodnoťte Start
, End
a Step
jako skalární konstanty a použijte výsledek pro range
vyhodnocení.
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
Výstup
z | start | end | Krok |
---|---|---|---|
1 | 1 | 9 | 2 |
3 | 1 | 9 | 2 |
5 | 1 | 9 | 2 |
7 | 1 | 9 | 2 |
9 | 1 | 9 | 2 |
Následující příklad ukazuje, jak toscalar
je možné použít k "opravě" výrazu tak, aby byl vypočítán přesně jednou. V tomto případě výraz, který se počítá, vrátí pro vyhodnocení jinou hodnotu.
let g1 = toscalar(new_guid());
let g2 = new_guid();
range x from 1 to 2 step 1
| extend x=g1, y=g2
Výstup
x | y |
---|---|
e6a15e72-756d-4c93-93d3-fe85c18d19a3 | c2937642-0d30-4b98-a157-a6706e217620 |
e6a15e72-756d-4c93-93d3-fe85c18d19a3 | c6a48cb3-9f98-4670-bf5b-589d0e0dcaf5 |
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro