toscalar()

Zwraca wartość stałej skalarnej wyrażenia obliczonego.

Ta funkcja jest przydatna w przypadku zapytań wymagających obliczeń etapowych. Na przykład oblicz łączną liczbę zdarzeń, a następnie użyj wyniku do filtrowania grup, które przekraczają określony procent wszystkich zdarzeń.

Wszystkie dwie instrukcje muszą być oddzielone średnikiem.

Składnia

toscalar(Wyrażenie)

Dowiedz się więcej o konwencjach składniowych.

Parametry

Nazwa Typ Wymagane Opis
expression string ✔️ Wartość do konwersji na wartość skalarną.

Zwraca

Wartość stałej skalarnej wyrażenia obliczonego. Jeśli wynik jest tabelaryczny, pierwsza kolumna i pierwszy wiersz zostaną podjęte do konwersji.

Porada

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. Wynika to z faktu, że 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 ograniczyć 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

Dane wyjściowe

x Y
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

Dane wyjściowe

z start end krok
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

Dane wyjściowe

x Y
e6a15e72-756d-4c93-93d3-fe85c18d19a3 c2937642-0d30-4b98-a157-a6706e217620
e6a15e72-756d-4c93-93d3-fe85c18d19a3 c6a48cb3-9f98-4670-bf5b-589d0e0dcaf5