Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Join the Fabric FabCon Global Hackathon—running virtually through Nov 3. Open to all skill levels. $10,000 in prizes! Register now.

Reply
prabin09
Frequent Visitor

New to Power BI and DAX and need help

Hello everyone, I am new to Power BI and DAX. I am using Power BI for one my work project. Basically, I have 3 tables: Employee, Skill, and Language.
Employee table contains all the information of an employee.
An employee can have multiple skills, so the skill table contains employee id, skill, and country the employee is located in.
An employee can also speak multiple languages, so the language table contains employee id, language, and country the employee is located in.

There is a one to many relationship between Employee and Skill table. Same goes for the Employee and language table.

prabin09_1-1694810704787.png

 

I have a task to create a Dashboard where users can filter employees based on skills and languages. I am able to create dashboard that can accomplish some of the objectives. The dashboard that I have can filter employee on multiple skills and languages using the AND logic. For example, if I want to look employees that have Java and Python skills as well as speak spanish then I am able to achieve that.

But the problem is, skills and language data are not in standard form. So, there are employee that have listed Java skill as Java Programming, Core Java, Java 7 and so on. This goes for all the skills and its difficult to standardize all the variations at this point. So, I was wondering if I could perform %LIKE% search without affecting the intersection logic. If I select Python then it should also match Python 3.0, Basics of Python, and so on. 

prabin09_0-1694810204519.png


This is how my dashboard looks like.

To apply the AND logic for skills slicer, I have following DAX measures:

Selected Skills = IF(ISFILTERED(Skill[Skill]), COUNTROWS(ALLSELECTED(Skill[Skill])), 0)
Employee Skills Check =
IF([Selected Skills] = 0, 1,
 IF(DISTINCTCOUNT(Skill[Skill]) = [Selected Skills], 1, 0))
Slicer Count for Skill = CALCULATE(COUNTROWS(Employee), FILTER(Employee, [Employee Skills Check] = 1))

Do I have to modify one of these DAX measures for the %Like% search or create new ones?

Similar logic and DAX measures apply for language. When I combine slicer count for skill and slicer count for language as filters to a visula making the condition where value > 0, then it gives employees that have skills as well as languages (intersection between languages and skills too).
Can you guys please help me to solve this?
 
This is how employee table looks like:

Employee_IDEmployee_NameEmailJob_TitleJob_LevelCountry
1Lila Mercere.richardson@randatmail.comAssociate Application Developer2Chile
2Orion Wolfeb.bennett@randatmail.comAssociate Application Designer9Argentina
3Serena Blakee.moore@randatmail.comProfessional Application Developer10Uruguay
4Zephyr Reedk.lloyd@randatmail.comProfessional Application Designer8Brazil
5Aria Donovanf.edwards@randatmail.comAssociate Application Developer2Colombia
6Kian Patelk.perkins@randatmail.comAssociate Application Designer4India
7Lyric Hayesj.richards@randatmail.comProfessional Application Developer2Argentina
8Emery Yanga.reed@randatmail.comProfessional Application Designer0Armenia
9Mira Bishopo.tucker@randatmail.comAssociate Application Developer12Australia
10Ronin Parkc.carter@randatmail.comAssociate Application Designer4Austria
 
 This is how skill table looks like:
Employee_IDSkillCountry
1PythonChile
1 JavaChile
1 C++Chile
1 JavaScriptChile
1 ReactChile
1 AngularChile
2 DjangoArgentina
2 Core JavaArgentina
2 Node.jsArgentina
2Python 3.0Argentina
3 Java ProgrammingUruguay
3Java 7Uruguay
3Basics of PythonUruguay

When I select Java in the slicer it should also account Java Programming and count it. The count for employees with Java and Python skills should be 3 instead of 1.  This logic should be implemented without affecting the intersection logic.

5 REPLIES 5
Ashish_Mathur
Super User
Super User

Hi,

In the Skill table, you should write this calculated column formula to group the various skills into categories.  Create a single column Table (called Skill category) with 2 entries - Python and Java.  Write this calculated column formula in the Skill table

Column = FIRSTNONBLANK(FILTER(VALUES('Skill Category'[Skill category]),SEARCH('Skill Category'[Skill category],Skill[Skill],1,0)),1)

Hope this helps.

Ashish_Mathur_0-1694910262028.png

 


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/

Hello @Ashish_Mathur ,
Thank you so much for your reply. I am concerned that this won't be an effiecient solution if I have hundreds and thousands of employees data, and each employee has multiple skills with multiple names and variations. Also, theere will be an update to the table every month. So, I guess with this solution I will have to check in everytime if I have a skill category that will include a new employee skill and if not I will have to keep adding new skill categories. Is that correct? 

You are welcome.  You will obviously have to create the Skill Table manually.  A human being will have to put in some effort at least.  


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/
hnguy71
Super User
Super User

hi @prabin09 ,

 

You can go about this in three or more ways, but all of them requires a mapping of some sort:

 

1. Easy way is to use groups within Power BI.

2. Medium way is to have a master mapping to your skills.

3. Long way is to call an API or ML model to determine category / bin of your skills or languages.


I'll show you the easy way first as it may fit your criteria:

2023-09-16_11h28_25.gif



Did I answer your question?
Please help by clicking the thumbs up button and mark my post as a solution!

Hello @hnguy71 ,

Thank you for your reply. I see that your 1st solution is to group skills into categories. This could have been a solution for me if I had limited skills, but the problem is I have about hundreds and thousands of rows of data. It wouldn't be efficient enough to manually group these skills. Also, every month I will be getting new data in a huge amount. So, this solution is not that applicable to my case. Above is just a sample data where I have tried my best to replicate the challenges that I am having. 
I would prefer a solution where when users filter multiple skills (Java, Python) and matchmaking happens, then other variations (Core Java, Python 3.0) should have a true match to contribute to the employee count. 

Helpful resources

Announcements
FabCon Global Hackathon Carousel

FabCon Global Hackathon

Join the Fabric FabCon Global Hackathon—running virtually through Nov 3. Open to all skill levels. $10,000 in prizes!

September Power BI Update Carousel

Power BI Monthly Update - September 2025

Check out the September 2025 Power BI update to learn about new features.

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.

Top Solution Authors
Top Kudoed Authors