Функция Treatas DAX не работает должным образом, она возвращает полностью пустой столбец
Я пытаюсь понять DAX-функцию Treatas. Есть две таблицы Assets и Ticket . Таблица заявок имеет родительские и дочерние отношения. Для каждого значения Asset [AssetKey] я хочу вычислить количество дочерних элементов в таблице Ticket. Между этими таблицами есть две связи. Один активный и один неактивный.
Проблема: когда я использую функцию Treatas, полная мера Number of Child отображается пустым. Я использовал формулу -
Number of Child = CALCULATE(COUNT(Tickets[AssetKey]),TREATAS(SUMMARIZE(Asset,Asset[AssetKey]),Tickets[ParentId]))
Чтобы воспроизвести сценарий, выполните следующие действия:
Шаг 1: создайте таблицу Asset :
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.
Шаг 3: Теперь создайте следующие меры -
Number Of Tickets = COUNT(Tickets[TicketKey])
Number of Child = CALCULATE(COUNT(Tickets[AssetKey]),TREATAS(SUMMARIZE(Asset,Asset[AssetKey]),Tickets[ParentId]))
Теперь проблема: почему столбец Number of Child остается пустым.
Ожидаемый результат:
Ответы
Ваша проблема не в ТРЕАТАХ, а в РЕЗЮМЕ. TREATAS ожидает ввода таблицы, поэтому вы подвели итог.
Попробуйте следующее:
summarizedAsset = SUMMARIZE(Asset,Asset[AssetKey])
Это вернет вам 1,2,3,4,5. Логика, потому что это то, что вы просили сделать. Теперь TREATAS сделает то же самое со столом Ticket. Таким образом, он возвращает таблицу со значениями одного столбца «пусто», 1,2. Именно то, что мы можем ожидать. Следующее, что вы делаете COUNT для AssetKey, эта только что созданная таблица не имеет этого столбца, поэтому она возвращается пустой.
То, что вы ищете, - это столбец, в котором вычисляются дети:
Number of Child =
var Akey = Asset[AssetKey]
return CALCULATE(COUNT(Tickets[ParentId]), filter(Tickets, Akey = Tickets[ParentId]))
Это вернет именно то, что вы искали.
PS: 10 баллов, вы отлично справились с заданным вопросом, который легко воспроизвести другим. Вы работаете как профи !!