toscalar()
Platí pro: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
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 pak pomocí výsledku filtrovat skupiny, které překračují určité procento všech událostí.
Všechny dva příkazy musí být oddělené středníkem.
Syntaxe
toscalar(
výraz)
Přečtěte si další informace o konvencích syntaxe.
Parametry
Název | Type | Požadováno | Popis |
---|---|---|---|
výraz | 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ý, první sloupec a první řádek se převedou k převodu.
Tip
Příkaz let můžete použít pro čitelnost dotazu při použití toscalar()
.
Omezení
toscalar()
nelze použít ve scénáři, který funkci použije na každém řádku. Důvodem je to, že funkci lze vypočítat pouze konstantní početkrát během provádění dotazu.
Při dosažení tohoto omezení se obvykle 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
, jak je znázorněno 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
linka | 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 | step |
---|---|---|---|
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
lze použít k "opravě" výrazu tak, aby byl vypočítán přesně jednou. V tomto případě vypočítaný výraz vrátí jinou hodnotu pro každé vyhodnocení.
let g1 = toscalar(new_guid());
let g2 = new_guid();
range x from 1 to 2 step 1
| extend x=g1, y=g2
Výstup
linka | y |
---|---|
e6a15e72-756d-4c93-93d3-fe85c18d19a3 | c2937642-0d30-4b98-a157-a6706e217620 |
e6a15e72-756d-4c93-93d3-fe85c18d19a3 | c6a48cb3-9f98-4670-bf5b-589d0e0dcaf5 |