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

Find articles, guides, information and community news

Most Recent
FabricPam
Administrator
Administrator
Royel
Responsive Resident
Responsive Resident

Are you drowning in duplicate apps? Creating separate Executive, Sales, and Finance apps that essentially show the same data with different views?

There's a smarter way. Power BI App Audiences lets you deliver personalized, role-specific experiences within a single app – no more maintenance nightmares or content duplication.

What You'll Discover:

Streamlined Navigation: Each user sees only what matters to their role
Layered Security: Combine with RLS for bulletproof data protection
Developer Productivity: Manage one app instead of dozens

Enterprise Scale: Support up to 25 audiences and 10,000 users

Perfect For:

  • CEOs who need high-level KPIs only
  • Managers requiring departmental breakdowns
  • Sales teams focused on individual performance
  • IT admins seeking centralized management

Ready to revolutionize how you deliver insights? Our step-by-step walkthrough shows you exactly how to set up audiences, manage permissions, and verify everything works perfectly.

Plus: Learn the critical workspace permission mistake that breaks App Audiences – and how to avoid it!

[Read the full guide →]

Read more...

slindsay
Community Admin
Community Admin

Congratulations to our four finalists, who were selected for their exceptional Power BI reports in the DataViz World Champs preliminary round.

Read more...

uzuntasgokberk
Super User

Explore Power BI DAX functions with practical examples. Learn basic functions like CALCULATE, ALL, ALLSELECTED, ALLEXCEPT, DIVIDE, IF, and DATEADD, and see how to apply them in real-world scenarios.

Read more...

uzuntasgokberk
Super User

Generate and improve DAX measures with natural language using Power BI Copilot. Speed up the process, reduce errors, and quickly learn DAX patterns.

Read more...

Khashayar
Advocate I
Advocate I

The latest Power BI release confirms a clear direction: deeper AI integration, more flexible modeling, and smarter distribution.

The most impactful changes include:

AI at the Core: Copilot now generates DAX measure descriptions automatically and delivers filter-aware summaries, even in standalone mode.

Flexible Distribution: Org Apps in Pro Workspaces (Preview) enables tailored report experiences for different audiences from the same workspace.

Modeling Without Limits: Direct model editing in the service, native SQL queries in-browser, and expanded Databricks Direct Lake integration.

Better Connectivity: Updated Impala connector, Entra ID authentication for PostgreSQL, and streamlined PBIP format.

Microsoft is accelerating the shift toward self-service analytics powered by AI, while ensuring enterprise-grade modeling and connectivity. For organizations, this means faster insights, cleaner documentation, and a more personalized reporting experience.

slindsay
Community Admin
Community Admin

Meet the judges for the prelim round of the Power BI DataViz World Championships, EU edition.

Read more...

SolomonovAnton
Super User
Super User

You can create custom roles in Power BI Report Server (on-prem) — but you do it in SQL Server Management Studio (SSMS), not in the web portal. Roles are built from predefined tasks (permissions). Tasks themselves can’t be altered, and a single role can include either item-level tasks or system-level tasks (not both).

 

How security works

  • Role = set of tasks. Tasks are fixed (e.g., View reports, Manage reports). You can combine tasks into your own role definitions. You cannot create new tasks or change task behaviour.
  • Two scopes:
    • System-level roles (site-wide operations such as managing schedules, jobs, server settings).
    • Item-level roles (permissions on folders, reports, data sources, resources). A role can include tasks from one scope only.
  • Role assignments happen in the web portal (map users/groups to roles at site level and/or on folders/reports).
Read more...

tharunkumarRTK
Super User
Super User

In my previous blog I explained bout Web.BrowserContents, in this blog I will exaplin why we should avoid using it 

 

What if the data is not on the web page? 

Let’s say you’re interested in the ‘Index of Consumer Sentiment’ data from the University of Michigan’s portal:

data.sca.isr.umich.edu/get-table.php

 

tharunkumarRTK_0-1754835719669.png

You could manually download the file and import it into Power BI Desktop — but that’s tedious. Every data update would require you to download the latest file and refresh your dataset manually. 

A better approach is to find the direct file URL from the site, usually by inspecting the anchor (<a>) tag hyperlink. Once you have this URL, connecting directly works—until you realize there is a unique file’s ID, month and year with in the URL as query parameter.  

 

https://data.sca.isr.umich.edu/get-table.php?
c=YB&y=2025&
m=6&n=1a&
f=pdf&
k=a01fbcbe6e713ac1a6d67875f5e19fc2

 

It indicates every month the URL parameter value changes. So, you’re back to square one. 

Time to roll up the sleeves and brainstorm a solution

 

Using Web.Contents and Text.FromBinary 

When you use the graphical interface and supply the web page URL, the first navigation window will show you the table it has identified but it will not show the underlying anchor tag URLs. 

 

tharunkumarRTK_1-1754835872078.png

M expression will look similar to this: 

Web.BrowserContents("https://data.sca.isr.umich.edu/tables.php") 

If you go this route, refreshing the dataset from the Power BI Service fails due to two main reasons: 

Dynamic Data Source Limitation 
Web.BrowserContents does not support data refresh from power bi service  

 

Solution 
1. Replace Web.BrowserContents with Web.Contents, and split your web URL into a root URL and a query parameter. 
Web.Contents("https://data.sca.isr.umich.edu", [RelativePath="tables.php#"]) 

tharunkumarRTK_0-1754836194538.png

 

This modification avoids issues with dynamic data sources and browser engine requirements. 

Extract the HTML using Web.Contents(), As we all know the output of this function is binary value, convert this binary to text using Text.FromBinary.  

tharunkumarRTK_1-1754836238525.png

As you can see we are able to extract the underlying HTML, the next task to identify the file url within this code. Here’s where things get tricky. As far as I know, there’s no M function that reads anchor elements directly. 

But we have workarounds! Either we can use text manipulation function like Text.BetweenDelimiter OR we can use Html.Table function. Second option would require HTML knowledge to identify the class and identifier names of different elements in the code. Since we only need one link and to keep things simple, lets solve this using text manipulation functions 

We can use functions like Text.PositionOf to locate the exact file URL. For example, in my scenario, the relative file URL is found between two position markers. As a result, you can dynamically extract the file URL. 

 

 

Text.BetweenDelimiters(
Text.BetweenDelimiters(
Text.FromBinary(
Web.Contents("https://data.sca.isr.umich.edu/tables.php#")),
"The Index of Consumer Sentiment", " </div>"),
" href=", ">")

 

 

 

tharunkumarRTK
Super User
Super User

Extracting or scraping data from publicly accessible websites is not difficult in Power BI Desktop thanks to its web connector. 

tharunkumarRTK_0-1754835387022.png

 

let 
 Source = Web.BrowserContents( 
   "https://www.worldometers.info/world-population/population-by-country/
 ) 
in 
Source  

 

If you've noticed Html.Tables being used as well, you might wonder why. The answer is simple: the output of Web.BrowserContents isn't directly a table or a readable value—it’s a binary value. You need to convert this binary data into something readable, which is where parsing functions come in. That’s why, when you’re pulling data from an API, along with Web.Contents function, functions like Json.Document, Xml.Document, or Csv.Document are invoked depending on the endpoint's data format. Similarly, data from Excel files located in Sharepoint folder will use Excel.Workbook(). 

 

Why Is Html.Tables Needed? 

Let’s break this down. Suppose the URL you provided isn’t an Excel file on SharePoint or an API endpoint, but just a publicly accessible webpage. The data is available right on the page itself, which is — naturally — in HTML format. To present tabular data in HTML, developers often use the <table> tag. So, when you use a web URL as a source in Power BI Desktop, it’s intelligence identifies the output format and automatically applies the necessary parsing functions to present your data. If the site contains multiple tables (multiple <table> tags), the navigation pane displays all of them, allowing you to choose which table you want to import. 

Since this data is publicly accessible, anonymous authentication works, and you can refresh the data from the Power BI Service.  

 

In my next blog I will continue the discussion on this topic where I will explain a practical scenario

Ilgar_Zarbali
Super User
Super User

Calculation groups can greatly minimize the need for creating duplicate measures by enabling you to define DAX expressions as calculation items, which can then be applied to the existing measures in your model. In this newsletter article, I used the AdventureWorks dataset. The Power BI Desktop file, both for practice and with solutions, can be downloaded from the following link.

https://onedrive.live.com/?id=357FB5C8090FE1B2%21s1e4f1311b59d4cad85bac9e6d2a9107e&cid=357fb5c8090fe...

Read more...

Arul
Super User
Super User

Tired of emailing .pbix files back and forth and losing track of the “latest version”?
With CI/CD in Power BI, you can automate deployments, keep perfect version control and roll back mistakes in seconds all using Azure DevOps.

In this guide, I will show you how to set it up from scratch, even if you have never touched pipelines before.

Read more...

uzuntasgokberk
Super User
Super User

Add and use Apply All and Clear All Slicers in Power BI to update visuals or reset filters with one click. Clean, fast, step-by-step guide.

Read more...

Poweraegg
Advocate IV
Advocate IV

Struggling with large semantic models or massive datasets in Power BI? In this video, I’ll show you how to parameterize Import Mode by using values from a dimension table to dynamically filter the data you load. You’ll learn how to: Create a dynamic list from a dimension Build a query parameter based on that list Filter your fact table using an inner join Save and distribute lightweight .PBIT templates

Read more...

bhanu_gautam
Super User
Super User

👀 Have you ever written a DAX measure with CALCULATE() and thought — “this should work!” — only to see it break unexpectedly? Or maybe you tried CALCULATETABLE() and magically, everything worked.

Both functions seem to answer the same question:

“How do I modify the filter context?”

But they work very differently — and using the wrong one can lead to confusing totals, blank visuals, and filters behaving oddly.

Today, let’s demystify CALCULATE() and CALCULATETABLE(), when to use each, and why CALCULATETABLE() is often the safer bet in complex calculations.

Read more...

Helpful resources

Join Blog
Interested in blogging for the community? Let us know.