The source control features in Microsoft Fabric are evolving every day.
The PBIP feature included in Power BI allowed us to include source control on a SDLC process for Power BI, supporting reports and datasets linked directly from the portal to a repository.
The New Source Control Features
Recently, without much news, Microsoft extended the source control to support Notebooks, Lakehouses and the default dataset for the lakehouses.
The first detail we may notice is the change on the Git Status column on a Power BI workspace.
The Lakehouse and the Notebook appear with the uncommitted, meaning the source control supports them, but they are not inserted there yet.
Adding the New Objects to the Source Control Repository
The source control button will show the number of uncommitted objects we have. The image below is only an example.
Once we click the button, the Source Control window will show the objects we can commit to the repository: the lakehouse and notebook. We only need to click the Commit button.
The status of the objects will be changed to Synced, like on the images below.
The objects on DevOps
Let’s take one more step and look at the objects on Azure DevOps.
One folder will be created for each notebook and each lakehouse. The image below shows how the folders look like.
Both folders contain the files item.config.json and item.metadata.json . Power BI uses these two files to identify the folder as a single object in its environment.
The notebook is stored as a .py file. This may be a surprise, you may expect the format .ipynb.
The .py file contains metadata with the information about each code block in the notebook. In this way, Power BI can reconstruct all code blocks exactly as they were from the content of the .py file.
The SQL Endpoint Dylema
Every lakehouse has a SQL Endpoint. The SQL Endpoint is not supported yet on the Source Control, as you may notice on the image below.
Power BI allows us to change the current branch of the workspace using Workspace Settings -> GIT Integration.
However, if you try to change the branch to a branch where the lakehouse is not present, you will receive an error. This happens because the SQL Endpoint is not affected by the branch change and it would always be present, but you can’t break the relationship between the SQL Endpoint and the lakehouse.
The result: Once the lakehouse is inserted into the repository, it’s not possible to change to a different existing branch. Changing to any branch without the lakehouse will result on the above error.
Creating a new branch from the current one, on the other hand, is still possible. This happens because the lakehouse and SQL Endpoint will continue to be together.
It’s great to see the source control in Microsoft Fabric evolving. It still has a long way to go. Meanwhile, it created a new limitation. But we are getting there.