Advance your Data & AI career with 50 days of live learning, dataviz contests, hands-on challenges, study groups & certifications and more!
Get registeredJoin us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM. Register now.
Hi, I have the following data-
Sheet 1- (Access for 2020)
Name EmplID Security role
John 11111 role 1
John 11111 role 2
Ed 2222 role 1
Ed 2222 role 2
Ed 2222 role 3
Ed 2222 role 4
Sheet 2- (Access for 2021)
Name EmplID Security role
John 11111 role 1
John 11111 role 2
John 11111 role 3
Ed 2222 role 1
Ed 2222 role 2
Ed 2222 role 3
The result I am trying to get-
Name Security Role in 2020 Security Role 2021
John role1, role 2 role1,role2, role3
Ed role1, role2, role3,role4 role1,role2,role3
I have tried a lot of ways to get the resulting visual but I am stuck. Could you give me some ideas on how to get to the resulting visual?
Thanks!
Solved! Go to Solution.
Try this. (PBIX attached)
let
Source = Excel.Workbook(
File.Contents("H:\My Drive\Power BI\Community Solutions\Files\SecurityRole.xlsx"),
null,
true
),
#"Removed Other Columns" = Table.SelectColumns(Source, {"Name", "Data"}),
#"Renamed Columns" = Table.RenameColumns(#"Removed Other Columns", {{"Name", "Year"}}),
#"Added Custom" = Table.AddColumn(#"Renamed Columns", "Custom", each Table.PromoteHeaders([Data])),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom", {"Data"}),
#"Expanded Custom" = Table.ExpandTableColumn(
#"Removed Columns",
"Custom",
{"Name ", "EmplID ", "Security role"},
{"Name ", "EmplID ", "Security role"}
),
#"Grouped Rows" = Table.Group(
#"Expanded Custom",
{"Year", "Name ", "EmplID "},
{
{"Count", each Table.RowCount(_), Int64.Type},
{
"all",
each _,
type table [Name = text, #"Name " = text, #"EmplID " = number, Security role = text]
}
}
),
Concat = Table.AggregateTableColumn(
#"Grouped Rows",
"all",
{
{
"Security role",
each Text.Combine(List.Transform(_, (x) => Text.From(x)), ", "),
"Security Role"
}
}
),
#"Pivoted Column" = Table.Pivot(Concat, List.Distinct(Concat[Year]), "Year", "Security Role")
in
#"Pivoted Column"
| Have I solved your problem? Please click Accept as Solution so I don't keep coming back to this post, oh yeah, others may find it useful also ;). |
I'd suggest adding a year column to each table and then appending them together.
Name EmplID Security role Year
John 11111 role 1 2020
John 11111 role 2 2020
John 11111 role 1 2021
John 11111 role 2 2021
John 11111 role 3 2021
etc.
Then you can create a matrix visual with Name on the rows, years on the columns, and a concatenating measure for the values.
CONCATENATEX ( DISTINCT ( Table1[Security role] ), Table1[Security role], ", " )
Hi,
I realized the matrix format is very confusing when I write the dax expression.is there is any way to display the result in this format-
Name 2020 2021
John role 1 role 1
John role 2 role 2
John role 3
Ed role 1 role 1
Ed role 2 role 2
Ed role 3 role 3
Ed role 4
You could just do it in Power Query.
Code:
let
Source = Excel.Workbook(
File.Contents("H:\My Drive\Power BI\Community Solutions\Files\SecurityRole.xlsx"),
null,
true
),
#"Removed Other Columns" = Table.SelectColumns(Source, {"Name", "Data"}),
#"Renamed Columns" = Table.RenameColumns(#"Removed Other Columns", {{"Name", "Year"}}),
#"Added Custom" = Table.AddColumn(#"Renamed Columns", "Custom", each Table.PromoteHeaders([Data])),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom", {"Data"}),
#"Expanded Custom" = Table.ExpandTableColumn(
#"Removed Columns",
"Custom",
{"Name ", "EmplID ", "Security role"},
{"Name ", "EmplID ", "Security role"}
),
#"Grouped Rows" = Table.Group(
#"Expanded Custom",
{"Year", "Name ", "EmplID "},
{
{"Count", each Table.RowCount(_), Int64.Type},
{
"all",
each _,
type table [Name = text, #"Name " = text, #"EmplID " = number, Security role = text]
}
}
),
Concat = Table.AggregateTableColumn(
#"Grouped Rows",
"all",
{
{
"Security role",
each Text.Combine(List.Transform(_, (x) => Text.From(x)), ", "),
"Security Role"
}
}
)
in
Concat
You'll need to change the path obviously but I've attached the file and PBIX.
I realized the matrix format is very confusing when I write the dax expression.is there is any way to display the result in this format-
Name 2020 2021
John role 1 role 1
John role 2 role 2
John role 3
Ed role 1 role 1
Ed role 2 role 2
Ed role 3 role 3
Ed role 4
You could just do it in Power Query.
Code:
let
Source = Excel.Workbook(
File.Contents("H:\My Drive\Power BI\Community Solutions\Files\SecurityRole.xlsx"),
null,
true
),
#"Removed Other Columns" = Table.SelectColumns(Source, {"Name", "Data"}),
#"Renamed Columns" = Table.RenameColumns(#"Removed Other Columns", {{"Name", "Year"}}),
#"Added Custom" = Table.AddColumn(#"Renamed Columns", "Custom", each Table.PromoteHeaders([Data])),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom", {"Data"}),
#"Expanded Custom" = Table.ExpandTableColumn(
#"Removed Columns",
"Custom",
{"Name ", "EmplID ", "Security role"},
{"Name ", "EmplID ", "Security role"}
),
#"Grouped Rows" = Table.Group(
#"Expanded Custom",
{"Year", "Name ", "EmplID "},
{
{"Count", each Table.RowCount(_), Int64.Type},
{
"all",
each _,
type table [Name = text, #"Name " = text, #"EmplID " = number, Security role = text]
}
}
),
Concat = Table.AggregateTableColumn(
#"Grouped Rows",
"all",
{
{
"Security role",
each Text.Combine(List.Transform(_, (x) => Text.From(x)), ", "),
"Security Role"
}
}
)
in
Concat
You'll need to change the path obviously but I've attached the file and PBIX.
| Have I solved your problem? Please click Accept as Solution so I don't keep coming back to this post, oh yeah, others may find it useful also ;). |
I realized the matrix format is very confusing when I write the dax expression.is there is any way to display the result in this format-
Name 2020 2021
John role 1 role 1
John role 2 role 2
John role 3
Ed role 1 role 1
Ed role 2 role 2
Ed role 3 role 3
Ed role 4
Try this. (PBIX attached)
let
Source = Excel.Workbook(
File.Contents("H:\My Drive\Power BI\Community Solutions\Files\SecurityRole.xlsx"),
null,
true
),
#"Removed Other Columns" = Table.SelectColumns(Source, {"Name", "Data"}),
#"Renamed Columns" = Table.RenameColumns(#"Removed Other Columns", {{"Name", "Year"}}),
#"Added Custom" = Table.AddColumn(#"Renamed Columns", "Custom", each Table.PromoteHeaders([Data])),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom", {"Data"}),
#"Expanded Custom" = Table.ExpandTableColumn(
#"Removed Columns",
"Custom",
{"Name ", "EmplID ", "Security role"},
{"Name ", "EmplID ", "Security role"}
),
#"Grouped Rows" = Table.Group(
#"Expanded Custom",
{"Year", "Name ", "EmplID "},
{
{"Count", each Table.RowCount(_), Int64.Type},
{
"all",
each _,
type table [Name = text, #"Name " = text, #"EmplID " = number, Security role = text]
}
}
),
Concat = Table.AggregateTableColumn(
#"Grouped Rows",
"all",
{
{
"Security role",
each Text.Combine(List.Transform(_, (x) => Text.From(x)), ", "),
"Security Role"
}
}
),
#"Pivoted Column" = Table.Pivot(Concat, List.Distinct(Concat[Year]), "Year", "Security Role")
in
#"Pivoted Column"
| Have I solved your problem? Please click Accept as Solution so I don't keep coming back to this post, oh yeah, others may find it useful also ;). |
Hi I tried doing that but whenever I add years on the column it displays only one column on the Matrix either 2020 or 2021, the both do not display together.
Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!
Check out the October 2025 Power BI update to learn about new features.