A função DAX do Treatas não está funcionando como esperado, está retornando uma coluna em branco completa

Aug 16 2020

Estou tentando entender a função DAX do Treatas. Existem duas tabelas Assets e Ticket . A tabela de tickets tem relacionamento pai e filho. Para cada valor de Asset[AssetKey], desejo calcular a contagem de filhos na tabela Ticket. Há dois relacionamentos entre essas tabelas. Um ativo e outro inativo.

O problema: quando uso a função Treatas, a medida completa do número da criança é retornada em branco. Eu usei a fórmula -

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

Para replicar o cenário siga os passos abaixo:

Etapa 1: criar a tabela Asset :

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

Criar bilhete de mesa

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

Etapa 2: crie um relacionamento entre os ativos e a tabela Ticket (um para muitos) na coluna AssetKey.

Passo 3: Agora crie as medidas abaixo -

Number Of Tickets = COUNT(Tickets[TicketKey])

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

Agora o problema: Por que a coluna Número de Filhos fica em branco.

A saída esperada é:

Respostas

1 Aldert Aug 16 2020 at 23:23

Seu problema não é os TRATADOS e sim o RESUMIR. TREATAS espera que a entrada da tabela seja resumida.

Tente o seguinte:

summarizedAsset = SUMMARIZE(Asset,Asset[AssetKey])

Isso retorna 1,2,3,4,5. Lógica porque foi isso que você pediu. Agora TRATAS vai fazer o mesmo na mesa Ticket. Então ele retorna uma tabela com valores de uma coluna "vazia",1,2. Exatamente o que podemos esperar. A próxima coisa que você faz é um COUNT no AssetKey, essa tabela recém criada não tem essa coluna então ela retorna vazia.

O que você está procurando é uma coluna que está calculando os filhos:

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

Isso retorna exatamente o que você estava procurando.

PS: 10 pontos, você fez um excelente trabalho na pergunta, fácil para os outros reproduzirem. Você trabalha como profissional!!