{"id":1633,"date":"2026-07-04T17:50:03","date_gmt":"2026-07-04T15:50:03","guid":{"rendered":"https:\/\/www.flip-design.de\/?p=1633"},"modified":"2026-07-04T17:50:03","modified_gmt":"2026-07-04T15:50:03","slug":"providing-centralized-semantic-models-helper-models-with-composite-models-in-power-bi","status":"publish","type":"post","link":"https:\/\/www.flip-design.de\/?p=1633","title":{"rendered":"<strong>Providing Centralized Semantic Models (Helper Models) with Composite Models in Power BI<\/strong>"},"content":{"rendered":"\n<p>In my previous articles, I demonstrated how to create both a Date dimension and Calculation Groups directly in Power BI Desktop using TMDL.<\/p>\n\n\n\n<ul>\n<li>Creating a Date Dimension with TMDL: <a href=\"https:\/\/www.flip-design.de\/?p=1533\">https:\/\/www.flip-design.de\/?p=1533<\/a><\/li>\n\n\n\n<li>Creating Calculation Groups with TMDL: <a href=\"https:\/\/www.flip-design.de\/?p=1537\">https:\/\/www.flip-design.de\/?p=1537<\/a><\/li>\n<\/ul>\n\n\n\n<p>A common challenge in real-world projects is making these reusable objects available to multiple report developers.<\/p>\n\n\n\n<p>Especially in larger organizations, not every developer has the required knowledge to build and maintain Date dimensions or Calculation Groups. In addition, every enhancement or bug fix must often be implemented in numerous reports, resulting in unnecessary maintenance effort.<\/p>\n\n\n\n<p>For this reason, it makes sense to maintain these shared components only once and reuse them across multiple Power BI projects.<\/p>\n\n\n\n<p>One elegant solution is the use of <strong>Composite Models<\/strong>. If you are not yet familiar with this concept, I have already covered it in a previous article:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-flip-it-de-sql-bi-and-more wp-block-embed-flip-it-de-sql-bi-and-more\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"xhExbxadc9\"><a href=\"https:\/\/www.flip-design.de\/?p=1278\">Power BI composite models \u2013 a underestimated feature<\/a><\/blockquote><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8222;Power BI composite models \u2013 a underestimated feature&#8220; &#8211; flip-it.de :: SQL, BI and more\" src=\"https:\/\/www.flip-design.de\/?p=1278&#038;embed=true#?secret=FgfGXcXTbd#?secret=xhExbxadc9\" data-secret=\"xhExbxadc9\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<p><strong>Creating the Central Semantic Model<\/strong><\/p>\n\n\n\n<p>For this example, I created a new Power BI file that contains only the shared components.<\/p>\n\n\n\n<p>These include:<\/p>\n\n\n\n<ul>\n<li>a Date dimension<\/li>\n\n\n\n<li>a Calculation Group for time intelligence<\/li>\n\n\n\n<li>optionally, additional shared dimensions or Calculation Groups<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image.png\"><img decoding=\"async\" loading=\"lazy\" width=\"940\" height=\"505\" src=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image.png\" alt=\"\" class=\"wp-image-1634\" srcset=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image.png 940w, https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-300x161.png 300w, https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-768x413.png 768w\" sizes=\"(max-width: 940px) 100vw, 940px\" \/><\/a><\/figure>\n\n\n\n<p>The Calculation Group used here is the same one presented in my previous article:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-flip-it-de-sql-bi-and-more wp-block-embed-flip-it-de-sql-bi-and-more\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"5uHpuvjCOc\"><a href=\"https:\/\/www.flip-design.de\/?p=1537\">Accelerating Power BI Development with TMDL: Faster, Consistent, and Scalable Reporting<\/a><\/blockquote><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8222;Accelerating Power BI Development with TMDL: Faster, Consistent, and Scalable Reporting&#8220; &#8211; flip-it.de :: SQL, BI and more\" src=\"https:\/\/www.flip-design.de\/?p=1537&#038;embed=true#?secret=wVdjSz0a2Q#?secret=5uHpuvjCOc\" data-secret=\"5uHpuvjCOc\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>Of course, this model can contain many additional reusable components, for example:<\/p>\n\n\n\n<ul>\n<li>Date dimensions<\/li>\n\n\n\n<li>Product dimensions<\/li>\n\n\n\n<li>Organizational hierarchies<\/li>\n\n\n\n<li>Cost center dimensions<\/li>\n\n\n\n<li>Country or regional dimensions<\/li>\n\n\n\n<li>Calculation Groups<\/li>\n\n\n\n<li>Shared measures<\/li>\n<\/ul>\n\n\n\n<p>Once completed, the model is published to a centrally managed Power BI workspace.<\/p>\n\n\n\n<p><strong>Required Permissions<\/strong><\/p>\n\n\n\n<p>To consume the model, report developers only require:<\/p>\n\n\n\n<ul>\n<li>Read permissions on the workspace<\/li>\n\n\n\n<li>Build permission on the semantic model<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-1.png\"><img decoding=\"async\" loading=\"lazy\" width=\"940\" height=\"463\" src=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-1.png\" alt=\"\" class=\"wp-image-1635\" srcset=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-1.png 940w, https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-1-300x148.png 300w, https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-1-768x378.png 768w\" sizes=\"(max-width: 940px) 100vw, 940px\" \/><\/a><\/figure>\n\n\n\n<p>I also recommend assigning an <strong>Endorsement<\/strong> (<em>Promoted<\/em> or <em>Certified<\/em>) to the semantic model. This makes it much easier for developers to find and immediately identify it as an approved corporate model.<\/p>\n\n\n\n<p><strong>Using the Model in a Report<\/strong><\/p>\n\n\n\n<p>Next, I opened Power BI Desktop using a different user account.<\/p>\n\n\n\n<p>In this report, only the fact data is imported.<\/p>\n\n\n\n<p>The shared objects are then connected by selecting <strong>Power BI semantic model<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-2.png\"><img decoding=\"async\" loading=\"lazy\" width=\"940\" height=\"521\" src=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-2.png\" alt=\"\" class=\"wp-image-1636\" srcset=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-2.png 940w, https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-2-300x166.png 300w, https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-2-768x426.png 768w\" sizes=\"(max-width: 940px) 100vw, 940px\" \/><\/a><\/figure>\n\n\n\n<p>After selecting the previously published semantic model&#8230;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-3.png\"><img decoding=\"async\" loading=\"lazy\" width=\"940\" height=\"564\" src=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-3.png\" alt=\"\" class=\"wp-image-1637\" srcset=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-3.png 940w, https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-3-300x180.png 300w, https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-3-768x461.png 768w\" sizes=\"(max-width: 940px) 100vw, 940px\" \/><\/a><\/figure>\n\n\n\n<p>&#8230;the required tables can simply be added to the report.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-4.png\"><img decoding=\"async\" loading=\"lazy\" width=\"887\" height=\"972\" src=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-4.png\" alt=\"\" class=\"wp-image-1638\" srcset=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-4.png 887w, https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-4-274x300.png 274w, https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-4-768x842.png 768w\" sizes=\"(max-width: 887px) 100vw, 887px\" \/><\/a><\/figure>\n\n\n\n<p>the Model view, Power BI automatically highlights objects that originate from an external semantic model.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-5.png\"><img decoding=\"async\" loading=\"lazy\" width=\"940\" height=\"505\" src=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-5.png\" alt=\"\" class=\"wp-image-1639\" srcset=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-5.png 940w, https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-5-300x161.png 300w, https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-5-768x413.png 768w\" sizes=\"(max-width: 940px) 100vw, 940px\" \/><\/a><\/figure>\n\n\n\n<p>After creating a measure based on the fact table, it can immediately be used together with the centrally managed Calculation Group.<\/p>\n\n\n\n<p>Naturally, this requires a relationship between the fact table and the shared Date dimension.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-6.png\"><img decoding=\"async\" loading=\"lazy\" width=\"940\" height=\"505\" src=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-6.png\" alt=\"\" class=\"wp-image-1640\" srcset=\"https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-6.png 940w, https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-6-300x161.png 300w, https:\/\/www.flip-design.de\/wp-content\/uploads\/2026\/07\/image-6-768x413.png 768w\" sizes=\"(max-width: 940px) 100vw, 940px\" \/><\/a><\/figure>\n\n\n\n<h2>Benefits of a Helper Model<\/h2>\n\n\n\n<p>Using a centralized semantic model offers several advantages:<\/p>\n\n\n\n<ul>\n<li>Centralized maintenance of shared dimensions<\/li>\n\n\n\n<li>Reusable Calculation Groups<\/li>\n\n\n\n<li>Reduced duplication of business logic<\/li>\n\n\n\n<li>Lower maintenance effort<\/li>\n\n\n\n<li>Consistent calculations across reports<\/li>\n\n\n\n<li>Standardized semantic models throughout the organization<\/li>\n\n\n\n<li>Reduced load on data sources because shared dimensions only need to be refreshed once<\/li>\n\n\n\n<li><strong>Translations, display names, descriptions, and other model metadata only need to be maintained once and are automatically available to all connected reports.<\/strong><\/li>\n<\/ul>\n\n\n\n<p>In larger Power BI environments, this approach can significantly simplify both development and long-term maintenance.<\/p>\n\n\n\n<h2>Current Limitations<\/h2>\n\n\n\n<p>At the time of writing, there are still a few limitations.<\/p>\n\n\n\n<p>For example, <strong>DAX User Defined Functions (UDFs)<\/strong> cannot currently be shared through a centralized semantic model.<\/p>\n\n\n\n<p>The same applies to measures or calculations that expose information such as the <strong>last data refresh timestamp<\/strong>. These calculations always belong to the semantic model in which they were created and therefore cannot be provided centrally.<\/p>\n\n\n\n<p>Hopefully, Microsoft will remove these limitations in the future and allow even more reusable functionality to be delivered through centralized semantic models.<\/p>\n\n\n\n<h2>Conclusion<\/h2>\n\n\n\n<p>Composite Models provide an excellent way to build reusable semantic components for an entire Power BI environment.<\/p>\n\n\n\n<p>Shared Date dimensions, Calculation Groups, translations, and other commonly used semantic objects can be maintained in a single location and reused across multiple reports. This reduces maintenance effort, ensures consistent calculations, simplifies multilingual deployments, and makes report development much easier\u2014especially for developers with limited modeling experience.<\/p>\n\n\n\n<p>For larger Power BI implementations, I consider this one of the cleanest and most maintainable approaches for providing reusable semantic components across an organization.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In my previous articles, I demonstrated how to create both a Date dimension and Calculation Groups directly in Power BI Desktop using TMDL. A common challenge in real-world projects is making these reusable objects available to multiple report developers. Especially &hellip; <a href=\"https:\/\/www.flip-design.de\/?p=1633\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/www.flip-design.de\/index.php?rest_route=\/wp\/v2\/posts\/1633"}],"collection":[{"href":"https:\/\/www.flip-design.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.flip-design.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.flip-design.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.flip-design.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1633"}],"version-history":[{"count":1,"href":"https:\/\/www.flip-design.de\/index.php?rest_route=\/wp\/v2\/posts\/1633\/revisions"}],"predecessor-version":[{"id":1641,"href":"https:\/\/www.flip-design.de\/index.php?rest_route=\/wp\/v2\/posts\/1633\/revisions\/1641"}],"wp:attachment":[{"href":"https:\/\/www.flip-design.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1633"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.flip-design.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1633"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.flip-design.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1633"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}