Forum Discussion
Connecting Two Tables w/ Lookup
Hi Everyone,
This is my first time posting to this community, so forgive me if I'm not using proper etiquette or providing enough context; I will offer more context as requested, just go easy on me if I'm doing it wrong.
I'm a relatively new Power BI user (began working with Power BI at the beginning of September) and I'm experiencing issues connecting (joining) two tables together. The desired result is for me to be able to go to the canvas and pull the first name and last name from the Userlist table and also pull the Learning Plan and class name from the Learning Plans table.
I recognize that I don't have a direct relationship b/w these two tables, but that's why I'm reaching out to you all here. I know there needs to be a connection (column/foreign key), I'm just not sure what that looks like. The Usergroups table that the other two tables are connected to contains a unique list of the usergroup IDs (primary key) and the actual user groups.
Any and all suggestions are welcome and appreciated. I'm a willing learner, so please share the knowledge and expertise you have. Thanks in advance!
Hi Anonymous,
I am assuming that there can be more than one row with the same Usergroup ID in Learning plans and you essentially want to join Learning Plans and Userlsist on the Usergroup ID. The relationships aren't much help in getting to a solution here but there are other ways. I am not sure if this is really the best solution, but if you want is to create a new table with a join between Learning Plans and Userlist, something like this could be a starting point. Click "New Table" and enter the following (or your edit of the same)
NewTable = VAR LPT =
SELECTCOLUMNS('Learning Plans',
"UG",'Learning Plans'[Usergroup ID],
"Learning Plan",'Learning Plans'[Learning Plan]) RETURN FILTER(CROSSJOIN(Userlist,LPT), Userlist[Usergroup ID] = [UG])IN SELECTCOLUMNS you identify the table you want to select columns from followed by a name for the column and a definition. The reason this is necessary is because the column we want to join on have the same name ([Usergroup ID] in both tables, so all we are doing here is renaming that column. You should include all columns from Learning Plan that you want in the result.
The FILTER statement simply selects all rows in the table resulting from the crossjoin between the SELECTCOLUMNS and the Userlist where the Usergroup ID columns agree.
As I said, not particularly elegant but it gets the job done. I hope somebody can come up with something better.
15 Replies
- AnonymousNot applicable
Try making the link between Usergroups and Userlist cross filter then you should have a table that relates First and Last Name to Plan and Class based on the usergroups ID Key. Also is Usergroups ID a one to many relationship for both tables?
- AnonymousNot applicable
Thanks for the response - Anonymous
I currently have the cross filter on the two relationships set to "Both". And yes, Usergroups ID is a one to many relationship for both tables.
Here's my result:
- mow700Resolver I
One workaround might be to add some calculated columns to your Usergroups table to co-locate all your data in one place. Since the tables are related, you can use something like:
First Name = RELATED('Userlist'[First Name]) Class Name = RELATED('Learning Plans'[Class Name])If your Usergroups table contains the values you want to use in your visual you should see the expected result.
- AnonymousNot applicable
Thanks for your response - mow700
I tried to create a new column using the syntax you provided, but it didn't work as the related() function wouldn't even recognize the first name column - I also tried relatedtable(), but ran into a similar issue. I'm not sure if this approach will get me the desired result.
The Usergroups table is a reference table that is comprised of 2 columns, 'Usergroup ID' and 'Usergroup'. There are only 13 rows in this table and the plan is to map them to the other 2 tables using the Usergroup ID.
- erik_tarnvikSolution Specialist
Hi Anonymous,
it is not entirely clear what it is you want to achieve here. UserGroups table has a one to many relationship to both UserList and Learning Plans, which implies there is a many-to-many (implied) relationship between users and learning plans. What is it exactly you are trying to tie together?
It would help if you could give an example of what visual you are trying to create on the dashboard using this data model.