Treatas DAX-Funktion funktioniert nicht wie erwartet. Sie gibt eine vollständig leere Spalte zurück

Aug 16 2020

Ich versuche, Treatas DAX-Funktion zu verstehen. Es gibt zwei Tabellen Assets und Ticket . Die Ticket -Tabelle hat eine Eltern-Kind-Beziehung. Für jeden Wert von Asset[AssetKey] möchte ich die Anzahl der Kinder in der Tickettabelle berechnen. Zwischen diesen Tabellen bestehen zwei Beziehungen. Eine aktive und eine inaktive.

Das Problem: Wenn ich die Treatas-Funktion verwende, wird das vollständige Maß Number of Child leer zurückgegeben. Ich habe die Formel verwendet -

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

Führen Sie die folgenden Schritte aus, um das Szenario zu replizieren:

Schritt 1: Tabelle Asset erstellen :

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

Tischticket erstellen

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

Schritt 2: Erstellen Sie eine Beziehung zwischen Assets und der Tickettabelle (eins zu vielen) in der Spalte AssetKey.

Schritt 3: Erstellen Sie nun die folgenden Maßnahmen -

Number Of Tickets = COUNT(Tickets[TicketKey])

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

Nun das Problem: Warum die Spalte Anzahl der Kinder leer ist.

Die erwartete Ausgabe ist:

Antworten

1 Aldert Aug 16 2020 at 23:23

Ihr Problem sind nicht die BEHANDLUNGEN, sondern die ZUSAMMENFASSUNG. TREATAS erwartet eine Tabelleneingabe, also haben Sie zusammengefasst.

Versuche Folgendes:

summarizedAsset = SUMMARIZE(Asset,Asset[AssetKey])

Dies gibt Ihnen 1,2,3,4,5 zurück. Logisch, weil Sie es darum gebeten haben. Jetzt wird TREATAS dasselbe auf dem Tisch Ticket tun. Es gibt also eine Tabelle mit einspaltigen Werten "leer", 1,2 zurück. Genau das, was wir erwarten können. Als Nächstes führen Sie einen COUNT für AssetKey aus. Diese gerade erstellte Tabelle enthält diese Spalte nicht, sodass sie leer zurückgegeben wird.

Was Sie suchen, ist eine Spalte , in der die Kinder berechnet werden:

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

Dies gibt genau das zurück, wonach Sie gesucht haben.

PS: 10 Punkte, Sie haben bei der Fragestellung hervorragende Arbeit geleistet, die für andere leicht zu reproduzieren ist. Du arbeitest wie ein Profi!!