toscalar()
Dotyczy: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Zwraca wartość stałej skalarnej obliczonego wyrażenia.
Ta funkcja jest przydatna w przypadku zapytań wymagających obliczeń etapowych. Na przykład oblicz łączną liczbę zdarzeń, a następnie użyj wyniku, aby filtrować grupy, które przekraczają określony procent wszystkich zdarzeń.
Wszystkie dwie instrukcje muszą być oddzielone średnikiem.
Składnia
toscalar(
wyrażenie)
Dowiedz się więcej na temat konwencji składni.
Parametry
Nazwisko | Type | Wymagania | opis |
---|---|---|---|
wyrażenie | string |
✔️ | Wartość, która ma być konwertowana na wartość skalarną. |
Zwraca
Wartość stałej skalarnej obliczonego wyrażenia. Jeśli wynik jest tabelaryczny, pierwsza kolumna i pierwszy wiersz zostaną podjęte do konwersji.
Napiwek
Instrukcję let można użyć do czytelności zapytania w przypadku korzystania z polecenia toscalar()
.
Ograniczenia
toscalar()
Nie można zastosować w scenariuszu, który stosuje funkcję w każdym wierszu. Dzieje się tak, ponieważ funkcja może być obliczana tylko przez stałą liczbę razy podczas wykonywania zapytania.
Zazwyczaj po osiągnięciu tego ograniczenia zostanie zwrócony następujący błąd: can't use '<column name>' as it is defined outside its row-context scope.
W poniższym przykładzie zapytanie kończy się niepowodzeniem z powodu błędu:
'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)
Ten błąd można wyeliminować przy użyciu join
operatora , jak w poniższym przykładzie:
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
Wyjście
x | t |
---|---|
1 | 2 |
3 | 4 |
5 | 6 |
Przykłady
Oceń Start
wartości , End
i Step
jako stałe skalarne i użyj wyniku do range
oceny.
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
Wyjście
z | start | end | step |
---|---|---|---|
1 | 1 | 9 | 2 |
3 | 1 | 9 | 2 |
5 | 1 | 9 | 2 |
7 | 1 | 9 | 2 |
9 | 1 | 9 | 2 |
W poniższym przykładzie pokazano, jak toscalar
można użyć do "naprawy" wyrażenia, aby było obliczane dokładnie raz. W tym przypadku obliczane wyrażenie zwraca inną wartość na ocenę.
let g1 = toscalar(new_guid());
let g2 = new_guid();
range x from 1 to 2 step 1
| extend x=g1, y=g2
Wyjście
x | t |
---|---|
e6a15e72-756d-4c93-93d3-fe85c18d19a3 | c2937642-0d30-4b98-a157-a6706e217620 |
e6a15e72-756d-4c93-93d3-fe85c18d19a3 | c6a48cb3-9f98-4670-bf5b-589d0e0dcaf5 |