La funzione DAX di Treatas non funziona come previsto, restituisce una colonna completamente vuota

Aug 16 2020

Sto cercando di capire la funzione DAX di Treatas. Ci sono due tabelle Assets e Ticket . Il tavolo dei biglietti ha una relazione genitore e figlio. Per ogni valore di Asset[AssetKey], voglio calcolare il conteggio dei bambini nella tabella Ticket. Esistono due relazioni tra queste tabelle. Uno attivo e uno inattivo.

Il problema: quando utilizzo la funzione Treatas, la misura completa del numero di bambini viene restituita in bianco. Ho usato la formula -

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

Per replicare lo scenario seguire i passaggi seguenti:

Passaggio 1: crea la tabella Asset :

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

Crea biglietto da tavolo

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

Passaggio 2: crea una relazione tra le risorse e la tabella Ticket (da uno a molti) sulla colonna AssetKey.

Passaggio 3: ora crea le seguenti misure:

Number Of Tickets = COUNT(Tickets[TicketKey])

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

Ora il problema: perché la colonna Numero di figli risulta vuota.

L'output atteso è:

Risposte

1 Aldert Aug 16 2020 at 23:23

Il tuo problema non è il TRATTAMENTO ma il RIASSUNTO. TREATAS si aspetta l'input della tabella così hai riassunto.

Prova quanto segue:

summarizedAsset = SUMMARIZE(Asset,Asset[AssetKey])

Questo ti restituisce 1,2,3,4,5. Logica perché questo è quello che gli hai chiesto di fare. Ora TREATAS farà lo stesso sul tavolo Ticket. Quindi restituisce una tabella con i valori di una colonna "vuoto", 1,2. Esattamente quello che possiamo aspettarci. La prossima cosa che fai un COUNT su AssetKey, questa tabella appena creata non ha questa colonna quindi restituisce vuoto.

Quello che stai cercando è una colonna che sta calcolando i bambini:

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

Questo restituisce esattamente ciò che stavi cercando.

PS: 10 punti, hai fatto un ottimo lavoro sulla domanda posta, facile da riprodurre per gli altri. Lavori come un professionista!!