다음을 통해 공유


toscalar()

적용 대상: ✅Microsoft Fabric✅

계산된 식의 스칼라 상수 값을 반환합니다.

이 함수는 미리 구성된 계산이 필요한 쿼리에 유용합니다. 예를 들어 총 이벤트 수를 계산한 다음 결과를 사용하여 모든 이벤트의 특정 백분율을 초과하는 그룹을 필터링합니다.

두 문은 세미콜론으로 구분됩니다.

구문

toscalar( )

구문 규칙에 대해 자세히 알아봅니다.

매개 변수

이름 Type 필수 설명
expression string ✔️ 스칼라 값으로 변환할 값입니다.

반품

계산된 식의 스칼라 상수 값입니다. 결과가 테이블 형식이면 변환을 위해 첫 번째 열과 첫 번째 행이 수행됩니다.

를 사용할 때 쿼리의 가독성을 위해 let 문을 사용할 수 있습니다 toscalar().

제한 사항

toscalar() 는 각 행에 함수를 적용하는 시나리오에 적용할 수 없습니다. 이는 함수를 쿼리 실행 중에 일정한 횟수로만 계산할 수 있기 때문입니다. 일반적으로 이 제한에 도달하면 다음 오류가 반환됩니다. can't use '<column name>' as it is defined outside its row-context scope.

다음 예제에서는 오류와 함께 쿼리가 실패합니다.

'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)

다음 예제와 같이 연산자를 join 사용하여 이 오류를 완화할 수 있습니다.

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

출력

x y
1 2
3 4
5 6

실제 시나리오에 대한 추가 완화 패턴

많은 실제 시나리오에서는 다음과 같이 자체 집계를 수행하는 식을 사용하여 행당 스칼라 값을 계산할 수 있습니다.

| extend result = toscalar(T | where Key == key | summarize max(Value))

행당 한 번 평가할 수 없으므로 toscalar() 이 패턴이 실패합니다. 아래에서 지원되는 완화 패턴 중 하나를 사용합니다.

  1. 데이터를 한 번 미리 집계한 다음, 효율성을 높이기 위해 집계된 결과를 주 테이블에 다시 조인합니다.
let summary =
    T
    | summarize maxValue = max(Value) by Key;

Dataset1
| join kind=leftouter summary on Key
| project Key, maxValue
  1. 값이 가장 높은 행을 검색하는 데 사용합니다 arg_max() . 이는 최대값과 연결된 열이 모두 필요한 경우에 유용합니다.
let summary =
    T
    | summarize arg_max(Timestamp, *) by Key;

Dataset1
| lookup summary on Key
  1. lookup 키/값 매핑을 사용하여 행 컨텍스트 위반을 방지하고 효율적인 차원 테이블 조회를 보장합니다.
let lookupTable =
    T | summarize maxValue = max(Value) by Key;

Dataset1
| lookup lookupTable on Key
  1. 창 함수 또는 make-series 시간 창 집계 사용
Dataset1
| make-series maxValue = max(Value)
      on Timestamp
      from ago(1h) to now()
      step 1m
      by Key

예제

이 섹션의 예제에서는 구문을 사용하여 시작하는 방법을 보여 줍니다.

평가 범위 설정

Start EndStep스칼라 상수로 평가하고 평가에 range 결과를 사용합니다.

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

출력

z start end step
1 1 9 2
3 1 9 2
5 1 9 2
7 1 9 2
9 1 9 2

고정 및 동적 GUID 생성

다음 예제에서는 toscalar() 사용하여 고정 guid생성하고, 정확하게 한 번 계산하고, guid동적 값을 생성하는 방법을 보여줍니다.

let g1 = toscalar(new_guid());
let g2 = new_guid();
range x from 1 to 2 step 1
| extend x=g1, y=g2

출력

x y
e6a15e72-756d-4c93-93d3-fe85c18d19a3 c2937642-0d30-4b98-a157-a6706e217620
e6a15e72-756d-4c93-93d3-fe85c18d19a3 c6a48cb3-9f98-4670-bf5b-589d0e0dcaf5
  • 스칼라 함수 형식 한눈에