cancel
Showing results for 
Search instead for 
Did you mean: 

Fabric is Generally Available. Browse Fabric Presentations. Work towards your Fabric certification with the Cloud Skills Challenge.

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.

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
PBI November 2023 Update Carousel

Power BI Monthly Update - November 2023

Check out the November 2023 Power BI update to learn about new features.

Community News

Fabric Community News unified experience

Read the latest Fabric Community announcements, including updates on Power BI, Synapse, Data Factory and Data Activator.

Power BI Fabric Summit Carousel

The largest Power BI and Fabric virtual conference

130+ sessions, 130+ speakers, Product managers, MVPs, and experts. All about Power BI and Fabric. Attend online or watch the recordings.

Top Solution Authors
Top Kudoed Authors