April 22, 2024

How to Change a Snowflake Connection From Public to Private in Power BI Datasets

By Gavin Pedersen

As Power BI developers, we are sometimes beholden to organizational changes that are outside of our control, especially when those changes are regarding data governance

In this blog, we’ll explore how to handle such changes, such as transitioning from a Snowflake Data Cloud Public URL to a Private URL for semantic models in Power BI. 

You get nervous because you know you have a number of semantic models that leverage the Public URL, and you have no idea how to handle this change without rebuilding the entire thing from the ground up.

Thankfully, there’s a way for you to quickly change these connections in existing semantic models so that you can adhere to new governance policies without running into many tech debt issues.

What is Snowflake Private Link?

Let’s start by distinguishing between Snowflake’s public and private URLs.

Snowflake Public URL: a public-facing URL for Snowflake that provides access to data within an organization’s Snowflake environment. Public in this context refers to the ability of authorized users outside of the Snowflake platform to access the data stored on Snowflake.

Snowflake Private URL: also known as Snowflake Private Link, restricts access to the data to a narrower set of users. Where a Public URL can be accessed by users outside of the platform, Access to a Private URL will typically require additional authorization mechanisms for extra security. An example of an additional authorization would be requiring developers to use a VPN when connecting to Snowflake Private Link.

How to Change the Snowflake Connection in your Power BI Dataset

It’s typical for organizations to require developers to use a Snowflake Private URL due to the extra security required for access. But what if it wasn’t always that way at your company? Let’s say a new governance policy requires all embedded connections to your Snowflake environment to use a private URL. Not only would you have to apply this new policy to any new Power BI Semantic Models you build, but you’ll likely be required to update existing semantic models.

Luckily, there are a few simple steps you can take to update the embedded Snowflake connection in your Power BI Semantic model so that you won’t need to rebuild the entire thing from the ground up:

Note: While the topic of this blog is converting the URL from Snowflake Public to Snowflake Private, the steps below are the same for changing the connection string regardless of the Snowflake source.

Before completing the steps below, if your organization requires you to take any extra security precautions, such as a VPN, you will need to turn that on.

Step 1: Download the .PBIX file from the Power BI Workspace.

Step 2: Open the .PBIX file locally on your machine → Open Power Query

Step 3: Select the query that has the Snowflake connection and open the Source step by clicking on the gear icon in the Applied Steps panel on the right.

Step 4: Replace the public URL with the private Snowflake URL connection string (as well as any other changes in this window you need to make) then click OK.

Step 5: Repeat Step 4 for all Snowflake queries in the workbook.

Step 6: Click the Close & Apply button.

Step 7: Publish the .PBIX file back to the workspace and make sure that the semantic model is mapped to any required gateways before refreshing.


As Snowflake becomes an industry leader in data warehousing, business intelligence teams need to be able to modify the reporting artifacts that are dependent on Snowflake. In the case of Power BI, developers and development teams will often need to change the connection URL to make sure they are keeping in line with their organization’s data governance standards. The steps reviewed above provide a quick solution to this.


If you’re unable to download the file, it’s likely due to one of a few reasons. The first is that it’s stored in a large dataset format. If this is the case, all you need to do is change it back to small in the settings, and you will be able to download it. 

The other reasons might be that the semantic model was edited with an XMLA endpoint or that incremental refresh has been set up. Unfortunately, there isn’t a methodology to update the connection in these instances. 

At the time this blog was written, there was no API that could be used for this. There are APIs for updating semantic model data sources. However, Snowflake is not supported by this methodology. 

Data Coach is our premium analytics training program with one-on-one coaching from renowned experts.

Accelerate and automate your data projects with the phData Toolkit