This post is about how to perform inner join in DAX. If you don't know what that is you, can access my previous post here which is about join types.
Microsoft's definition for NATURALINNERJOIN is: "Performs 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." And the syntax is:
NATURALINNERJOIN(<leftJoinTable>,
<rightJoinTable>)
First of all the definition is wrong. I had two tables with no common column names (check the image below) and I got no error. This definition is really misleading because it makes you think that Power BI creates connection between columns by using common column names but that's not what happens. You need to have a relationship between 2 tables to perform inner join. This Microsoft definition definitely needs correction.
These are my tables and below is the formula with the result table.
As you see there is no error anywhere despite I don't have any common column names. To test my "Power BI needs a relationship, not common column names." idea, I removed the relationship between the tables (column names are different). When I removed it, I got this error message.
When I changed the column "Name2" to "Name" in Table 2, and delete the relationship, I got the same error. The unexpected thing is, when I create the relationship back (column names are the same) I got another error. If you have the same column names, you get this error.
This is 100% opposite of what Microsoft's definition says. So you should have NOT common column names, otherwise, you get this error. To perform NATURALINNERJOIN successfully, first, you need a relationship between tables. Second, you should NOT have columns with common names. Microsoft's documentation says nothing about relationship and it needs to be added to the documentation. Other than those, columns being joined on must have the same data type in both tables.
To perform inner join on Power Query, we need to use Merge Queries or Merge Queries as new option. At the wizard window which pops up, we should choose inner(only matching rows) as join kind. But at Power Query, we need to have common column names to perform inner join. Otherwise, it gives an error.
I've seen Microsoft documentation mistakes before, but they were mostly small details. But this one is completely the opposite of what it should be. What I learned during the process is, although it's not the case most of the time, Microsoft's documentations can be very misleading.
Comments