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

Score big with last-minute savings on the final tickets to FabCon Vienna. Secure your discount

Reply
Monsieboy
Regular Visitor

How to structure multilingual dimension table with repeated PKs — normalize or unpivot?

I have a dimension table with translations — 4 rows per EntityNumber (one for each language: DE, FR, EN, NL).
There's also a TypeOfDenomination column with 2 values (1 = full name, 2 = abbreviation), making it 8 rows per entity in total.

Since dimension tables require unique PKs, I’m wondering:

🔹 Should I normalize Language and TypeOfDenomination into separate dimension tables (snowflake model)?
🔹 Or should I unpivot the data so I have one row per EntityNumber with multiple columns (e.g. Name_EN_Type1, Name_FR_Type2, etc.)?

What’s the cleanest and most performant approach in Power BI for this kind of multi-language setup?

 

Unique Primary Keys

1.jpg

 

 

 

Language: 4 values (EN, FR, NL, DE)

2.jpg

 

 

 

 

 

2 dimension types (1 and 2) - basically means full or abbreviation of company name

3.jpg

 

 

 

 
1 ACCEPTED SOLUTION
v-kpoloju-msft
Community Support
Community Support

Hi @Monsieboy,
Thank you for reaching out to the Microsoft fabric community forum.

After thoroughly reviewing the details you provided, I reproduced the scenario again, and it worked on my end. I used it as sample data and successfully implemented it.

outcome:

vkpolojumsft_0-1748962827300.png

 


I am also including .pbix file for your better understanding, please have a look into it:

If this post helps, then please give us ‘Kudos’ and consider Accept it as a solution to help the other members find it more quickly.

Thank you for using Microsoft Community Forum.

View solution in original post

8 REPLIES 8
v-kpoloju-msft
Community Support
Community Support

Hi @Monsieboy,
Thank you for reaching out to the Microsoft fabric community forum.

After thoroughly reviewing the details you provided, I reproduced the scenario again, and it worked on my end. I used it as sample data and successfully implemented it.

outcome:

vkpolojumsft_0-1748962827300.png

 


I am also including .pbix file for your better understanding, please have a look into it:

If this post helps, then please give us ‘Kudos’ and consider Accept it as a solution to help the other members find it more quickly.

Thank you for using Microsoft Community Forum.

Hi @Monsieboy,

May I ask if you have resolved this issue? If so, please mark the helpful reply and accept it as the solution. This will be helpful for other community members who have similar problems to solve it faster.

Thank you.

Hi @Monsieboy,

I wanted to check if you had the opportunity to review the information provided. Please feel free to contact us if you have any further questions. If my response has addressed your query, please accept it as a solution and give a 'Kudos' so other members can easily find it.
Thank you.

Hi @Monsieboy,

I hope this information is helpful. Please let me know if you have any further questions or if you'd like to discuss this further. If this answers your question, please Accept it as a solution and give it a 'Kudos' so others can find it easily.
Thank you.

DataNinja777
Super User
Super User

Hi @Monsieboy ,

 

Dimension tables should always have a unique primary key. For multilingual support, pivot the table to create separate columns for each language instead of repeating rows.

 

Best regards,

I understand, so my initial suggestion. If I have 4 languages x 2 type of translations, that means 8 columns for those right?

But how will the model know which language to give me the translation in? Will I need to define that or at least set a default language?

burakkaragoz
Community Champion
Community Champion

Hi @Monsieboy ,

 

In Power BI, the cleanest and most scalable approach for multilingual dimension tables like yours is to normalize the data rather than unpivoting into wide columns.

Here’s why:

  • Keeping Language and TypeID as separate columns allows you to filter and translate dynamically using slicers or user preferences.
  • You can create a composite key using EntityNumber & Language & TypeID to ensure uniqueness in your dimension table.
  • This structure works well with row-level security and localization logic, especially if you want to show the UI in the user’s preferred language.
  • Unpivoting into wide columns (e.g. NameEN1Type1) becomes hard to maintain and doesn’t scale well when adding new languages or types.

So yes, go with the normalized structure:

EntityNumber | Language | TypeID | Denomination

Then in your model, you can use a measure or calculated column to pick the right translation based on the current language context.

Let me know if you need help building that logic.

If my response resolved your query, kindly mark it as the Accepted Solution to assist others. Additionally, I would be grateful for a 'Kudos' if you found my response helpful.
translation and formatting supported by AI

So basically snowflake/normalize the translations into a new table?
So I have fact table, then a dimension table with ID - type - language, and a snowflaked further normalized dimension table linked to the first dimension table with PK_label - language?

But do I have to force end-user who will select a company from fact table to also before that specify a language? Or set a default language and allow him to change it? Otherwise how will dimension tables know which of 4 languages to select for company name?

 

Thanks a lot!

Helpful resources

Announcements
August Power BI Update Carousel

Power BI Monthly Update - August 2025

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

August 2025 community update carousel

Fabric Community Update - August 2025

Find out what's new and trending in the Fabric community.