Udostępnij za pośrednictwem


toscalar()

Dotyczy: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft 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ń Startwartości , Endi 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