A função DAX do Treatas não está funcionando como esperado, está retornando uma coluna em branco completa
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
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!!