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

Get Fabric certified for FREE! Don't miss your chance! Learn more

Find articles, guides, information and community news

Most Recent
Khashayar
Resolver I
Resolver 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...

Helpful resources

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