Power BI is turning 10, and we’re marking the occasion with a special community challenge. Use your creativity to tell a story, uncover trends, or highlight something unexpected.
Get startedJoin us for an expert-led overview of the tools and concepts you'll need to become a Certified Power BI Data Analyst and pass exam PL-300. Register now.
Hi All,
I try to create a dax to pull top 10 projects with backlogs by division and by month. below is the dax. I got an error message saying cannot convert Division name to T/F logic. what could be wrong?
Solved! Go to Solution.
Hi @jimmyhua ,
Sorry, I forgot to mention that “multiple columns cannot be scalar value” indicates that the measure returns a table. Normally a measure should return a single value.
'Filter' is a table function that returns a table:
RETURN
FILTER ( DivisionMonthTable2, [RankByBL] <= 10 )
If you want to dynamically rank by Department and Date, I think you need to create two slicers and use the Card visual.
This function can combine the table into a single value
CONCATENATEX function (DAX) - DAX | Microsoft Learn
VAR DivisionMonthTable =
SUMMARIZE (
PJ401,
PJ401[Div Name],
PJ401[Date],
PJ401[Project ID],
PJ401[Project Name],
"Backlog",
CALCULATE (
SUMX ( PJ401, [CM CV] * [CV%] - [Inception-to-date Revenue] ),
KEEPFILTERS ( PJ401[Date] )
)
)
VAR DivisionMonthTable2 =
ADDCOLUMNS (
DivisionMonthTable,
"RankByBL", RANKX ( DivisionMonthTable, [Backlog],, DESC, DENSE )
)
RETURN
CONCATENATEX (
FILTER ( DivisionMonthTable2, [RankByBL] <= 10 ),
[Div Name] & " " & [Date] & " " & [Project ID] & " " & [Project Name] & " " & [RankByBL],
UNICHAR ( 10 )
)
This result should change dynamically based on the slicer selection.
Something like this:
If you still have problems, please provide simple data or a .pbix file without sensitive data.
If you are unsure how to upload data please refer to
How to provide sample data in the Power BI Forum - Microsoft Fabric Community
Best Regards,
Wenbin Zhou
HI @jimmyhua
please share sample data and desired output for better understanding and tested solution.
@jimmyhua Hi! Try with:
VAR DivisionMonthTable =
ADDCOLUMNS(
SUMMARIZE(
PJ401,
PJ401[Div Name],
PJ401[Date],
PJ401[Project ID],
PJ401[Project Name],
"Backlog",
CALCULATE(
SUMX(PJ401, [CM CV]*[CV%] - [Inception-to-date Revenue]),
KEEPFILTERS(PJ401[Date])
)
),
"RankByBL",
RANKX(
FILTER(
ALL(PJ401),
PJ401[Div Name] = EARLIER(PJ401[Div Name]) && PJ401[Date] = EARLIER(PJ401[Date])
),
[Backlog],
,
DESC,
Dense
)
)
RETURN
FILTER(
DivisionMonthTable,
[RankByBL] <= 10
)
BBF
Hi BeaBF,
Thank you very much. I tried. It got rid of the error. but the ranking seems off. all projects get a ranking of 1 and the result is the Sum of all projects. do i need to put in a keepfilter somewhere? Really appreciated your help.
Hi all,thanks for the quick reply, I'll add more.
Hi @jimmyhua ,
Try this:
VAR DivisionMonthTable =
SUMMARIZE (
PJ401,
PJ401[Div Name],
PJ401[Date],
PJ401[Project ID],
PJ401[Project Name],
"Backlog",
CALCULATE (
SUMX ( PJ401, [CM CV] * [CV%] - [Inception-to-date Revenue] ),
KEEPFILTERS ( PJ401[Date] )
)
)
VAR DivisionMonthTable2 =
ADDCOLUMNS (
DivisionMonthTable,
"RankByBL", RANKX ( DivisionMonthTable, [Backlog],, DESC, DENSE )
)
RETURN
FILTER ( DivisionMonthTable2, [RankByBL] <= 10 )
Best Regards,
Wenbin Zhou
@Anonymous really appreciated. your solution gives me a table of ranked top 10 by entire organization across all time period. I actually need top 10 result by month, by division. if no division is selected, then by the entire organization. I tried break the code in to different sections ( division or total organization). but then try to conditionally select which table to use based on external filter, it gives me an error message on multiple columns cannot be scalar value. apparently I cannot apply if or switch to a table. so I am still stuck. thanks again for helping.
Hi @jimmyhua ,
Sorry, I forgot to mention that “multiple columns cannot be scalar value” indicates that the measure returns a table. Normally a measure should return a single value.
'Filter' is a table function that returns a table:
RETURN
FILTER ( DivisionMonthTable2, [RankByBL] <= 10 )
If you want to dynamically rank by Department and Date, I think you need to create two slicers and use the Card visual.
This function can combine the table into a single value
CONCATENATEX function (DAX) - DAX | Microsoft Learn
VAR DivisionMonthTable =
SUMMARIZE (
PJ401,
PJ401[Div Name],
PJ401[Date],
PJ401[Project ID],
PJ401[Project Name],
"Backlog",
CALCULATE (
SUMX ( PJ401, [CM CV] * [CV%] - [Inception-to-date Revenue] ),
KEEPFILTERS ( PJ401[Date] )
)
)
VAR DivisionMonthTable2 =
ADDCOLUMNS (
DivisionMonthTable,
"RankByBL", RANKX ( DivisionMonthTable, [Backlog],, DESC, DENSE )
)
RETURN
CONCATENATEX (
FILTER ( DivisionMonthTable2, [RankByBL] <= 10 ),
[Div Name] & " " & [Date] & " " & [Project ID] & " " & [Project Name] & " " & [RankByBL],
UNICHAR ( 10 )
)
This result should change dynamically based on the slicer selection.
Something like this:
If you still have problems, please provide simple data or a .pbix file without sensitive data.
If you are unsure how to upload data please refer to
How to provide sample data in the Power BI Forum - Microsoft Fabric Community
Best Regards,
Wenbin Zhou
This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.
Check out the June 2025 Power BI update to learn about new features.
User | Count |
---|---|
14 | |
11 | |
10 | |
10 | |
9 |
User | Count |
---|---|
18 | |
13 | |
12 | |
11 | |
8 |