Treatas DAX 함수가 예상대로 작동하지 않습니다. 완전한 빈 열을 반환합니다.

Aug 16 2020

Treatas DAX 기능을 이해하려고합니다. AssetsTicket 두 개의 테이블이 있습니다 . 티켓 테이블에는 부모와 자식 관계가 있습니다. Asset [AssetKey]의 각 값에 대해 Ticket 테이블에서 자식 수를 계산하고 싶습니다. 이 테이블 사이에는 두 가지 관계가 있습니다. 하나는 활성이고 하나는 비활성입니다.

문제 : 내가 Treatas 기능을 사용할 때 전체 측정 값 자녀 수 는 공백으로 표시됩니다. 나는 공식을 사용했다-

Number of Child = CALCULATE(COUNT(Tickets[AssetKey]),TREATAS(SUMMARIZE(Asset,Asset[AssetKey]),Tickets[ParentId]))

시나리오를 복제하려면 다음 단계를 따르십시오.

1 단계 : 테이블 자산 생성 :

Asset = DATATABLE("AssetKey",INTEGER,"Name",STRING,{{1,"Australia"},
{2,"Belgium"},
{3,"Canada"},
{4,"Denmark"},
{5,"England"}})

테이블 티켓 생성

Tickets = DATATABLE("AssetKey",INTEGER,"ParentId",INTEGER,"TicketKey",INTEGER,{{3,1,1},
{1,Blank(),1},
{3,1,3},
{2,Blank(),4},
{4,2,5},
{3,1,6},
{2,Blank(),7},
{4,2,8},
{1,Blank(),9},
{5,2,10}})

2 단계 : AssetKey 열에 Assets와 Ticket 테이블 (일대 다) 간의 관계를 생성합니다.

3 단계 : 이제 아래 측정 값 생성-

Number Of Tickets = COUNT(Tickets[TicketKey])

Number of Child = CALCULATE(COUNT(Tickets[AssetKey]),TREATAS(SUMMARIZE(Asset,Asset[AssetKey]),Tickets[ParentId]))

이제 문제 : 자식 수 열이 비어있는 이유 .

예상되는 출력은 다음과 같습니다.

답변

1 Aldert Aug 16 2020 at 23:23

당신의 문제는 TREATAS가 아니라 SUMMARIZE입니다. TREATAS는 테이블 입력을 예상하므로 요약했습니다.

다음을 시도하십시오.

summarizedAsset = SUMMARIZE(Asset,Asset[AssetKey])

이것은 1,2,3,4,5를 반환합니다. 이것이 당신이 요청한 것이기 때문에 논리. 이제 TREATAS는 티켓 테이블에서 똑같이 할 것입니다. 따라서 하나의 열 값이 "empty", 1,2 인 테이블을 반환합니다. 정확히 우리가 기대할 수있는 것. 다음으로 AssetKey에서 COUNT를 수행하면 방금 만든이 테이블에이 열이 없으므로 비어 있습니다.

당신이 찾고 있는 것은 아이들을 계산 하는 입니다.

Number of Child = 
var Akey = Asset[AssetKey]
return CALCULATE(COUNT(Tickets[ParentId]), filter(Tickets, Akey = Tickets[ParentId]))

이것은 당신이 찾는 곳을 정확하게 반환합니다.

추신 : 10 점, 당신은 다른 사람들이 쉽게 재현 할 수있는 질문에 대한 훌륭한 일을했습니다. 당신은 프로로 일합니다 !!