Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started

Reply
Anonymous
Not applicable

Calculate: A table of multiple values was supplied where a single value was expected.

Hi guys,

Last year my collegue wrote a dax formula for my BI report. Unfortunately he is no longer working at my firm. Couple of days ago the datasource of my report was moved into the cloud. I already changed the location of the datasource in my report, but the Dax formula he wrote for me doesn't work since then. I tried a couple of things but it wouldn't work. The error is: A table of multiple values was supplied where a single value was expected. Can someone help me? Thank you!

The dax formula: 

 
EmployeeKey =
CALCULATE(
DISTINCT('DimEmployee'[EmployeeKey]),
FILTER('DimEmployee',
'FactActualHoursAll'[TT_EMP_ID] = 'DimEmployee'[EmployeeId] &&
'FactActualHoursAll'[TT_date] >= 'DimEmployee'[RowEffectiveDate] &&
'FactActualHoursAll'[TT_date] <= 'DimEmployee'[RowExpirationDate]
)
)
 
klchan06_0-1640183457207.png

 

 



1 ACCEPTED SOLUTION
v-yangliu-msft
Community Support
Community Support

Hi  @Anonymous ,

You can try to add all() or allselect() to the function

EmployeeKey =
CALCULATE (
    DISTINCT ( 'DimEmployee'[EmployeeKey] ),
    FILTER (
        ALLSELECTED ( 'DimEmployee' ),
        'FactActualHoursAll'[TT_EMP_ID] = 'DimEmployee'[EmployeeId]
            && 'FactActualHoursAll'[TT_date] >= 'DimEmployee'[RowEffectiveDate]
            && 'FactActualHoursAll'[TT_date] <= 'DimEmployee'[RowExpirationDate]
    )
)

Best Regards,

Liu Yang

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

View solution in original post

7 REPLIES 7
v-yangliu-msft
Community Support
Community Support

Hi  @Anonymous ,

You can try to add all() or allselect() to the function

EmployeeKey =
CALCULATE (
    DISTINCT ( 'DimEmployee'[EmployeeKey] ),
    FILTER (
        ALLSELECTED ( 'DimEmployee' ),
        'FactActualHoursAll'[TT_EMP_ID] = 'DimEmployee'[EmployeeId]
            && 'FactActualHoursAll'[TT_date] >= 'DimEmployee'[RowEffectiveDate]
            && 'FactActualHoursAll'[TT_date] <= 'DimEmployee'[RowExpirationDate]
    )
)

Best Regards,

Liu Yang

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

VahidDM
Super User
Super User

Hi @Anonymous 

 

 

Can you post sample data as text and expected output?

please see this post regarding How to Get Your Question Answered Quickly:
https://community.powerbi.com/t5/Community-Blog/How-to-Get-Your-Question-Answered-Quickly/ba-p/38490

The most important parts are:
1. Sample data as text, use the table tool in the editing bar
2. Expected output from sample data
3. Explanation in words of how to get from 1. to 2.
4. Relation between your tables

Appreciate your Kudos!!
LinkedIn:www.linkedin.com/in/vahid-dm/

PaulOlding
Solution Sage
Solution Sage

Hi @Anonymous 

It looks like you're trying to add a calculated column onto your fact table from a slowly changing dimension, DimEmployee.

The issue is DISTINCT returns a table, and tables can't be embedded in another table.

You should be using a function that returns a scalar.  You could have MAX, MIN, or perhaps SELECTEDVALUE, with a default for when there's more than one row in DimEmployee that meets the filter condition.

 

Anonymous
Not applicable

Hi, thanks for your response! How do i implemented this in the dax formula? 

HotChilli
Super User
Super User

Test it by replacing DISTINCT with DISTINCTCOUNT.  If you get results of greater than 1, that's the problem.

 

Anonymous
Not applicable

Hi, I did it. I get 10 rows of number 2 and that's it. How do i fix this? 

klchan06_0-1640189236765.png

 

So you have multiple rows in DimEmployee that meet this condition

 
'FactActualHoursAll'[TT_EMP_ID] = 'DimEmployee'[EmployeeId] &&
'FactActualHoursAll'[TT_date] >= 'DimEmployee'[RowEffectiveDate] &&
'FactActualHoursAll'[TT_date] <= 'DimEmployee'[RowExpirationDate]
 
I would try to find out why.  Choose a row of the fact table from your screenshot and see which rows are matching in DimEmployee.
You mentioned the datasource has moved.  Just throwing out ideas but, as your condition includes dates, perhaps there's something different about the date formats in the new datasource?

Helpful resources

Announcements
Europe Fabric Conference

Europe’s largest Microsoft Fabric Community Conference

Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.

July 2024 Power BI Update

Power BI Monthly Update - July 2024

Check out the July 2024 Power BI update to learn about new features.

July Newsletter

Fabric Community Update - July 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors
Top Kudoed Authors