Showing results for 
Search instead for 
Did you mean: 
Helper I
Helper I

naturalleftjoin DAX error at-least one common join column

I have two tables I am trying to perform a NATURALLEFTOUTERJOIN together based no the common column, 'name', but am receiving an error. 


'No common join columns detected. The join function 'NATURALLEFTOUTERJOIN' requires at-least one common join column.'


My DAX formula is: MSTable = NATURALLEFTOUTERJOIN('Now','Before')




Any suggestions as to why? The documentation ( says:


'an inner join of a table with another table. The tables are joined on common columns (by name) in the two tables. If the two tables have no common column names, an error is returned.'


If I create a connection between 'Now' and 'Before', I get the following error:


'Column '' in Table '' contains blank values and this is not allowed for columns on the one side of a many-to-one relationship or for columns that are used as the primary key of a table.'


Any suggestions why this occurs?

Frequent Visitor

Hi ahuhn,


You can make typecasing explictly in Power Query for common column i.e. at the time of loading of data using M formula.




Below is the solution that i can think  and suggest your. If NATURALJOIN is not able to match columns types for common column in "NOW" and "BEFORE" table, you need to make data type compatible explictly.

Below is the workaround -


Assuming that common column is "Name" and Relationshipt is in place.




                                       SELECTCOLUMNS('NOW',"Name",NOW[name]&"",<add another name , column as required>) ,

                                       SELECTCOLUMNS( 'BEFORE',"Name",BEFORE[name]&"",<add another name, columns as requierd)



Hope it should resolve this issue.



Amit Dhiman

One issue I had with this is that I was attempting to use a natural join on a temporary table within a measure and another table. I had to do all my joining as my first step, because once a temporary table was created, the relationship that the original tables had that the natural join would be performed on was lost.


Hope this helps anyone in a similar situation!

Frequent Visitor

I'm having the same issue here.
I have a static timeseries table that looks like this Date, ID, Value
I need to "filter" it into 2 tables using the endpoints of a slicer.
SData & EData are the result of this filtering using CalculateTable.
Both get their respective data points & nothing else.
Then I need to use "full join" on both SData & EData using ID as the join point.
This is where I got tripped up.
Certainly, I could do this in SQL readily but I need to dynamic aspect of the above if it works.

Solution Sage
Solution Sage

You need to have columns that define joins named differently.


It is counter intuitive, but in order for the function to work.


1. Relationship between column(s) defining join must be set before the function can be used.

2. Related column must have different name between two tables being joined.



Helpful resources

PBI User Groups

Welcome to the User Group Public Preview

Check out new user group experience and if you are a leader please create your group!

MBAS on Demand

Microsoft Business Applications Summit sessions

On-demand access to all the great content presented by the product teams and community members! #MSBizAppsSummit #CommunityRocks

Get Ready for Power BI Dev Camp

Power BI Dev Camp - June 24th

Mark your calendars and join us for our next Power BI Dev Camp!

Top Solution Authors
Top Kudoed Authors