
In my Power BI courses I always recommend some books and sites that will help them learn DAX or M. Most of the time i’m presenting to new users to Power BI, and having to get them to move from the Excel muscle memory that they have and also to show them that sometimes the code-less approach is not always the best way.
One example presented itself the other day. A user was combining some Excel sheets and wanted to create a rough dimension based on the values in one of the columns, then use it as a filter or axis. They hit the internet and came across a few post on how to do this. A few recommend this approach:
1 – Append the two tables together as new query
2 – Remove the columns you don’t need
3 – Remove duplicates
Well that is sort of fine, as you can’t specify a single column in the table append, and it can all be done in the interface. However is has a bit of overhead in the 1 and 2 stages, so can you do it so you only reference the relevant columns and remove some of the overhead. The answer is ‘Yes’, but you need to code it in M. Using the Blank Query function i created this M code:
let
Source = Table.Combine(
{
Table.SelectColumns(#"table name 1",{"column name"})
, Table.SelectColumns(#"table name 2",{"column name"})
, Table.SelectColumns(#"table name 3",{"column name"})
}
),
#"Removed Duplicates" = Table.Distinct(Source)
in
#"Removed Duplicates"
So lets look at the M code behind it.
So rather that use a query as a reference, you can declare the table and column that you want with the following
Table.SelectColumns(#"table name 1",{"column name"})
You wrap these up with a table combine to a SQL Union the columns together using the following
Table.Combine
than run a remove duplicates to do a SQL Union All. You don’t have to duplicate the whole tables/queries just to select the data, then trim it down to the columns that you want. As far as I can see you can’t do this in the interface, it only via M.