Forum Discussion
Anonymous
2 years agoNot applicable
Split multiple columns into rows using DAX
Hi Jihwan_Kim & other DAX experts, Thanks Jihwan_Kim for your help earlier. My query is, The condition to split is there are multiple columns to be splitting into rows. I have done splitting...
- 2 years ago
Hi,
I am not sure if I understood your question correctly, but please check the below and the attached pbix file.
Expected result table = VAR _t = GENERATESERIES ( 1, 100, 1 ) VAR _pathitem = ADDCOLUMNS ( Data, "@path", SUBSTITUTE ( Data[List of Students], ",", "|" ) ) VAR _pathitemsinging = ADDCOLUMNS ( Data, "@pathsinging", SUBSTITUTE ( Data[Singing], ",", "|" ) ) VAR _pathitemdancing = ADDCOLUMNS ( Data, "@pathdancing", SUBSTITUTE ( Data[Dancing], ",", "|" ) ) VAR _generatetable = FILTER ( GENERATE ( _t, ADDCOLUMNS ( _pathitem, "@Students", PATHITEM ( [@path], [Value] ) ) ), [@Students] <> BLANK () ) VAR _generatesinging = SUMMARIZE ( FILTER ( GENERATE ( _t, ADDCOLUMNS ( _pathitemsinging, "@sing", PATHITEM ( [@pathsinging], [Value] ) ) ), [@sing] <> BLANK () ), Data[ID], Data[Class Name], [@sing] ) VAR _generatedancing = SUMMARIZE ( FILTER ( GENERATE ( _t, ADDCOLUMNS ( _pathitemdancing, "@dance", PATHITEM ( [@pathdancing], [Value] ) ) ), [@dance] <> BLANK () ), Data[ID], Data[Class Name], [@dance] ) RETURN SUMMARIZE ( ADDCOLUMNS ( _generatetable, "@activity", SWITCH ( TRUE (), COUNTROWS ( FILTER ( _generatesinging, Data[ID] = EARLIER ( Data[ID] ) && Data[Class Name] = EARLIER ( Data[Class Name] ) && [@Students] = [@sing] ) ) >= 1 && COUNTROWS ( FILTER ( _generatedancing, Data[ID] = EARLIER ( Data[ID] ) && Data[Class Name] = EARLIER ( Data[Class Name] ) && [@Students] = [@dance] ) ) >= 1, "Sing,Dance", COUNTROWS ( FILTER ( _generatesinging, Data[ID] = EARLIER ( Data[ID] ) && Data[Class Name] = EARLIER ( Data[Class Name] ) && [@Students] = [@sing] ) ) >= 1, "Sing", COUNTROWS ( FILTER ( _generatedancing, Data[ID] = EARLIER ( Data[ID] ) && Data[Class Name] = EARLIER ( Data[Class Name] ) && [@Students] = [@dance] ) ) >= 1, "Dance" ) ), Data[ID], Data[Class Name], [@Students], [@activity] )
Jihwan_Kim
2 years agoSuper User
Hi,
I am not sure if I understood your question correctly, but please check the below and the attached pbix file.
Expected result table =
VAR _t =
GENERATESERIES ( 1, 100, 1 )
VAR _pathitem =
ADDCOLUMNS ( Data, "@path", SUBSTITUTE ( Data[List of Students], ",", "|" ) )
VAR _pathitemsinging =
ADDCOLUMNS ( Data, "@pathsinging", SUBSTITUTE ( Data[Singing], ",", "|" ) )
VAR _pathitemdancing =
ADDCOLUMNS ( Data, "@pathdancing", SUBSTITUTE ( Data[Dancing], ",", "|" ) )
VAR _generatetable =
FILTER (
GENERATE (
_t,
ADDCOLUMNS ( _pathitem, "@Students", PATHITEM ( [@path], [Value] ) )
),
[@Students] <> BLANK ()
)
VAR _generatesinging =
SUMMARIZE (
FILTER (
GENERATE (
_t,
ADDCOLUMNS ( _pathitemsinging, "@sing", PATHITEM ( [@pathsinging], [Value] ) )
),
[@sing] <> BLANK ()
),
Data[ID],
Data[Class Name],
[@sing]
)
VAR _generatedancing =
SUMMARIZE (
FILTER (
GENERATE (
_t,
ADDCOLUMNS ( _pathitemdancing, "@dance", PATHITEM ( [@pathdancing], [Value] ) )
),
[@dance] <> BLANK ()
),
Data[ID],
Data[Class Name],
[@dance]
)
RETURN
SUMMARIZE (
ADDCOLUMNS (
_generatetable,
"@activity",
SWITCH (
TRUE (),
COUNTROWS (
FILTER (
_generatesinging,
Data[ID] = EARLIER ( Data[ID] )
&& Data[Class Name] = EARLIER ( Data[Class Name] )
&& [@Students] = [@sing]
)
) >= 1 && COUNTROWS (
FILTER (
_generatedancing,
Data[ID] = EARLIER ( Data[ID] )
&& Data[Class Name] = EARLIER ( Data[Class Name] )
&& [@Students] = [@dance]
)
) >= 1, "Sing,Dance",
COUNTROWS (
FILTER (
_generatesinging,
Data[ID] = EARLIER ( Data[ID] )
&& Data[Class Name] = EARLIER ( Data[Class Name] )
&& [@Students] = [@sing]
)
) >= 1, "Sing",
COUNTROWS (
FILTER (
_generatedancing,
Data[ID] = EARLIER ( Data[ID] )
&& Data[Class Name] = EARLIER ( Data[Class Name] )
&& [@Students] = [@dance]
)
) >= 1, "Dance"
)
),
Data[ID],
Data[Class Name],
[@Students],
[@activity]
)Anonymous
2 years agoNot applicable
Thank you so much Jihwan_Kim