Source Control with Power BI - Can it be done?

Поділитися
Вставка
  • Опубліковано 28 січ 2025

КОМЕНТАРІ • 87

  • @dominicwrapson1199
    @dominicwrapson1199 3 роки тому +39

    As some others have stated, *.pbix aren't technically binary files, they are just re-badged zip files. If you change the extension and open it, basically everything inside (aside from actual binaries like images) are stored as plain text and easily diff-able.
    That said, there are ways to effectively use source control on pbix with some automation using pre-commit and post-commit hooks. The pre hook would unpack the pbix in to a folder of the same name, and THEN push those component pieces to source. The post-commit hook would then re-bundle what it gets from source control in to the appropriate pbix (zip) file/archive. I have been looking to implement this at my workplace for some time and haven't done so yet, but there are examples of people out there that have done it.
    Mostly this whole situation is infuriating to me as it means Microsoft could provide solutions to this source control problem very easily within their framework. Especially given they OWN GitHub and could VERY EASILY just add a feature (optional) to auto-unpack and re-pack PBIX files for source control.

  • @igorcotruta
    @igorcotruta 3 роки тому +3

    I’ve played with a different approach in GitHub Actions. One every PBIX commit/change I parse the file and spit out a Markdown file that represents all the relevant pieces of the file in a more or less readable form. The areas that I interpret are model stats, pq, DAX measures and visuals types and positioning. Then I commit the md file along side the pbix file with the same commit message as the original change. This was the Markdown file works as a proxy for easy interpretation of what has changed in the original PBIX file. It’s enough to answer the most often asked questions, what has changed, was the change done only in the model or visuals as well etc

  • @kalleguld
    @kalleguld 3 роки тому +4

    0:57 shouldn't that be "diffs", not "divs"?

  • @snowke5095
    @snowke5095 3 роки тому +3

    We have a setup where Power BI datasets and reports are stored in Azure Repo Git Repositories. We also have CI/CD pipelines for a multitenancy-like scenario where the same datasets and reports can be deployed to different customer workspaces. The TL;DR version is it can be done, but it takes A LOT of work.
    Outside of parameterizing the data source connections, we found it also helped to add a parameter for the number of rows you load. Saving the dataset with 0 rows loaded helps reduce the file size before you check in your code. Generating an HTML data dictionary helps a little with being able to compare differences in the model.
    Creating pipelines that can deploy the same datasets and reports to different customer workspaces in our case was a lot of Powershell Core scripts. I found it challenging to deploy the same source files to different workspaces that use different data source connections with their own respective on-premises data gateways. Trying to do this while preserving datasetIds and reportIds for me was really hard and I felt like I need to create "hacks" to finally get it work.

  • @marquesman87
    @marquesman87 3 роки тому +2

    This update will be very welcome! I have struggled a lot about a year ago trying to do something similar.

  • @AnweshGangula
    @AnweshGangula 3 роки тому +10

    At 0:53 I think you meant "Diffs", but the video shows "Divs"

    • @CL-es3pw
      @CL-es3pw 2 роки тому +1

      Thank you, this gave me a lot of confusion~

  • @orcrist484
    @orcrist484 3 роки тому +1

    0:52 - 's or diffs??

  • @evnpresson7258
    @evnpresson7258 3 роки тому +3

    What I am wanting and waiting for the ability to do version control on the visuals and actual report components. ALM toolkit plus One Drive is fine for my model tracking and deployment.

  • @donsmy1437
    @donsmy1437 3 роки тому +1

    We keep the model definition in SSAS which allows us to at least separate the model definition. I design the bim in VS2019. Once ready I check the project in to DevOps which kicks off a pipeline that creates a deployment package. That is then automatically pushed to our development environment which installs the bim in SSAS, transforms the data source connections to the deployment environment etc. It even creates a job in SQLServer to refresh the cube every 15/30 mins. We also manually add our PBIX files to source control as well. Happy to share DevOps steps etc if anyone is interested.

    • @sau002
      @sau002 3 роки тому

      Interesting. I have been thinking of the same

    • @sau002
      @sau002 3 роки тому

      Do you use SSAS on-premise OR Azure ?

    • @sau002
      @sau002 3 роки тому

      I am quite frustrated with PBIX/PBIT. Almost impossible to do any practical GIT integration and CI/CD or Pull Request review.

    • @donsmy1437
      @donsmy1437 3 роки тому

      @@sau002 yes, it's a big hammer approach to source control. That's why I put the model in SSAS using VS to build in all the detail. I've even written a translator to convert our software's internal formula language to DAX. All of which is easy to control in fine grain with source control from VS.

  • @PeterSchott
    @PeterSchott 3 роки тому +1

    I know at one point, we'd saved them as templates just to have the versions without all of the data, but still can't "diff" those. I appreciate the tips here and look forward to true versioning/diffing at some point. :)

  • @noahhadro8213
    @noahhadro8213 2 роки тому

    at minute 5:40 you show using VS Code. Is there a tool that will do the compare of BIM files but in an organized style kind of like ALM toolkit. I don't like the VS Code is just one big JSON file. I like when it is organized into tables... etc. Thoughts?

  • @abhikmukherjee6678
    @abhikmukherjee6678 3 роки тому +3

    Hi Adam, That's a brilliant spacecraft version history maintained on your T-shirt as well 😀👌

  • @azharhussain1772
    @azharhussain1772 Рік тому

    Definitely this is really required.

  • @dipsikhadas1895
    @dipsikhadas1895 3 роки тому +2

    Using the Power BI actions available in the Marketplace for the CI/CD implementation using Azure DevOps for Power BI

  • @ahmedtareq5342
    @ahmedtareq5342 3 роки тому +1

    This is a great subject, I have been struggling a lot with version control

  • @mcmoodoo
    @mcmoodoo 3 роки тому +1

    We would love the opportunity to "diff" the files, but we can leave out the feature of "div" the files as you proposed :)) Thanks for the content!

  • @project365
    @project365 3 роки тому

    Great video. To add on, deployment of bim file is supported in both premium per user, premium per capacity and power bi embedded

  • @andresgeb
    @andresgeb 3 роки тому

    This will be a great update, but I think that the PBI pipelines may support more than 3 stages.. i.e. De/QA/UAT/..../Stage/ Prod

  • @michaelfawcett6922
    @michaelfawcett6922 3 роки тому +1

    I like how the icon for "diff" is the html "div" icon < / >

  • @pabeader1941
    @pabeader1941 3 роки тому +11

    The .pbix file is a renamed .zip file. Change the extension to .zip Now you can see what is in the file. Might be able to do something in there.

    • @ryan_haigh
      @ryan_haigh 3 роки тому +4

      This is a great tip. If you unzip the pbix then rename the DataMashup file to a zip as well you can access your power query m code as a .m file which is just text

    • @MrBird666
      @MrBird666 3 роки тому

      I think you need to save as .pbit first then change extension to .zip to decode binary ? or can you do that with .pbix ? After unzipping there is a file called DataModelSchema.

    • @pabeader1941
      @pabeader1941 3 роки тому +1

      @@MrBird666 I've only ever changed the .pbix file. Not sure what a .pbit file is.

    • @cpassuel9857
      @cpassuel9857 3 роки тому

      It can also be used to modify/update images in the pbix file like logo or background as it can be tedious to do it in Power BI if you have multiple pages or images

  • @edgards
    @edgards 3 роки тому

    OMG Adam thanks for showcasing the Version history button in windows! Yesterday I royally messed up one of my PBI's by adding a composite model I couldn't get rid of (why Microsoft why???).
    This is a huge help to go and recover the previous report w/o the composite model!
    Thanks!!!!!!

    • @markgriffiths9714
      @markgriffiths9714 3 роки тому +2

      You can remove datasets you bring in to your model by removing them the in data source options, I looked for ages how to remove as they dont appear in power query.

  • @andreavega412
    @andreavega412 2 роки тому

    Which is the visual to get that USA Map in the report? Thanks

  • @sau002
    @sau002 3 роки тому +2

    Using ALM toolkit for comparing 2 PBIT files.

  • @TheTrevnan
    @TheTrevnan 3 роки тому

    We check in/out the entire pbix files to tfs, it's not very efficient but in a team of six across four sites we need some way of actually locking the files so we don't end up working on the same reports at once. I love powerbi, but still amazed source control wasn't on the initial roadmap. Being able to use visual studio with reporting services fully integrated and do a diff against previous versions is such a time saver, especially when things go wrong.

  • @k2theboss47
    @k2theboss47 3 роки тому +1

    Hey Adam, another option I've been doing is using powershell to archive all the pbix files of a Power Bi workspace, to an azure blob storage on a daily schedule.

    • @mohammadshaikh1191
      @mohammadshaikh1191 3 роки тому

      Hi Keith
      Could you please share the powershell script to save the PBIX files to BLOB STORAGE, I am looking to do this as well and how do we automate this process of running the cmdlet on a daily basis

  • @cefuller12
    @cefuller12 3 роки тому +1

    You said diffs, and I was also thinking fetch /merge as in a git action. But the video showed "Divs".

  • @terenskate
    @terenskate 3 роки тому +5

    When the complexity level of reports gets real having an appropiate version control is crucial. I do not know why they haven't implemented a way of handling version control yet. Even more so when the pbix file is a zip and there are traces that pbix work with configuration files and the like...

  • @keaganjordan1114
    @keaganjordan1114 3 роки тому +1

    Hi Adam, have you had the chance to try one of the Azure Dev Ops Extensions to get the Power BI CI/CD working?

  • @thomasivarsson2468
    @thomasivarsson2468 3 роки тому

    Great video. Thanks Adam.

  • @HJilova
    @HJilova Рік тому

    Do you have an example on how we can deploy PBI report using GitHub actions? The new PBIP integration only works with DevOps. How can we customize it for GitHub users?

  • @BryanFlores-ox5fe
    @BryanFlores-ox5fe 3 роки тому

    is there a way that can actually track changes with the report design of .pbix?

  • @GlennBuckholtz
    @GlennBuckholtz 3 роки тому

    What about checking in the .pbit? We keep our .pbit in devops so we don't end up checking in all that data.

  • @christophermueller3373
    @christophermueller3373 3 роки тому

    Do you think there is a way to take two different version pbix files and then zip them , extract their config, merge that together and then package the file back up? The goal would be to merge changes on the front end.

  • @sau002
    @sau002 3 роки тому

    Can Tabular Editor be used for extracting a BIM file from a Power BI template (PBIT) file?

  • @VladMZ
    @VladMZ 3 роки тому +1

    Adam, the easiest part of PBIX to source-control is your Power Query. You can simply copy all the queries as if you were to migrate the code from PBIX to a dataflow, but paste it into a regular text file. This gives you all your queries with comments and properties, no JSON nonsense, only M script, easily accessible via any text editor, or source control platform. The best part - it's just as easy to re-integrate it back into PBIX - copy/paste either the whole thing or specific lines you need. As for binaries, I'm an old school - working directory with version numbering added to each file name, and a subdir that's called "Promoted v.X" and "My Report.pbix" in it. I rename the subdir when the newer version is published, but always publish under the same name to prevent the reset of usage history.

  • @BeauRaines
    @BeauRaines 3 роки тому

    I copy the m code from the power query advanced editor and the SQL from the steps source and commit those plus the PBIX to our Azure DevOps repo. It is extra steps, but in addition to the version control I can search the SQL file easily, especially when our database team says they're changing a field or table, I can see what is affected.

  • @alanharsh6649
    @alanharsh6649 3 роки тому +1

    Would be great if you could directly publish a PBIT file as storing the data contained in a PBIX file isn’t a great idea for a source control system. We ended up creating a process to use a “deflated” PBIX file and then using the Rest APIs automating the publish through a dev ops CI/CD process. It isn’t perfect, but has made deploys a little less manual to the UAT and Prod spaces.

    • @sau002
      @sau002 3 роки тому

      I share your sentiments. I am frustrated too.

    • @sau002
      @sau002 3 роки тому

      Please, could you elaborate on your REST apis approach?

  • @MrAlivallo
    @MrAlivallo 2 роки тому

    There is also Synapse. Which has a workspace and GIT integration. Same limitations to Azure DevOps.

  • @evgeniyperfilyev
    @evgeniyperfilyev 3 роки тому +8

    Hi Adam. It's a pity we still don't have version control support for Power BI. In 21st century there's no excuse for not having plain text dev artefacts like JSON. Hopefully MS understands that and make it mandatory requirement for all new products. This is the reason why people might choose some other product instead. That said, diff/ merge is more of an enterprise requirement to support git branching for example. At that level you can probably swap Power BI Premium for Azure SSAS. And BIML should support that translation of model file into plain text. In the git you can store BIML files and expand into actual models as part of CI/CD. Plus as part of SSAS you get perspectives and partitioning, plus it can be cheaper than premium.

    • @sau002
      @sau002 3 роки тому

      I am shocked that MS is not paying heed to such an important feature. Very frustrating. My company has started to explore Amazon Quicksights. Much better in this respect.

    • @lanaya6261
      @lanaya6261 Рік тому

      @@sau002 does Amazon Quicksight has version control on visuals too or dataset only?

  • @marlonnucci809
    @marlonnucci809 3 роки тому

    Has anyone found a solution to get the conversation id outlook? can someone help me?

  • @gvisgr8gv
    @gvisgr8gv 3 роки тому

    Extract templates and those can also help in version control

  • @benbill8739
    @benbill8739 3 роки тому

    Hi guys,
    I'm using an Azure SQL DB with Azure AD. I can connect to this using SSMS and SSDT but when I try to connect with Power BI Desktop it won't authenticate the Azure Active Directory account (EXTERNAL_USER rôle). If I use an SQL login (SQL_USER rôle) with Power BI it works fine. Any thoughts on what I need to do to get this up and running?
    I now use ODBC connexion but this is not optimal and impossible to refresh data via Power BI Portal
    Thanks for any help

  • @LtRogers5
    @LtRogers5 2 роки тому

    I work exlusive with SAS Viya and SAS 9.4 with SAS DI Studio. Some few impotent files, like csv for config is in git. I'm now searching for a BI product that actually use some form of intelligent source control, with support for branchning and diffs. It's a great frustration that BI completely lacks this way of thinking. Love to see that there are more out there, who loves version control(and onedrive etc, doesn't count)

  • @raynaldgirard6699
    @raynaldgirard6699 3 роки тому +6

    for security reasons, you should never put the pbix in the source code controller as it contains the data. use the pbit. I hope that the future true microsoft solution for version management and source code control of power bi will take this into account: do not include the data.

    • @denwo1982
      @denwo1982 2 роки тому

      I’ve noticed on my azure devops there is a file size limit when loading into a branch, so do you suggest that I convert from pbix to pbit and then upload the pbit file into my branch? Will all the connections, DAX formula be kept once this is converted back to a pbix ?

    • @yourimenlibar5879
      @yourimenlibar5879 2 роки тому

      Very good remark Raynald. You should actually unload the data somehow. Maybe by reloading it from an empty source. But that also sucks a little bit.
      I now use live connection to a tabular model in the architecture so that solves the problem, but is not applicable everywhere...

  • @tomriddle8708
    @tomriddle8708 2 роки тому

    How manage power bi reports on Github?

  • @zolgs
    @zolgs 3 роки тому

    Hey, is this still the current state of CI/CD in Power BI? Are there any significant releases around this since you made this video?

    • @guillermoleonrodriguez7858
      @guillermoleonrodriguez7858 2 роки тому

      Hi Sebastian, did you have some answers since the last time you posted this?. Thanks in advance.

    • @zolgs
      @zolgs 2 роки тому

      @@guillermoleonrodriguez7858 Not really. It turned out, that multi-tenant CI/CD is a tricky thing and probably better suited for outside Pipelines like Azure DevOps, instead of using the built-on Power BI pipelines, which work great for single-tenant solutions.

    • @guillermoleonrodriguez7858
      @guillermoleonrodriguez7858 2 роки тому

      Thanks!. Appreciate your thoughts.

  • @LandscapeInMotion
    @LandscapeInMotion 3 роки тому +2

    Rename your .pbix file to .zip and bingo! Once you extract that zip you can source control the different files and components that make up the pbix.

    • @JanekBogucki
      @JanekBogucki 3 роки тому +1

      It would be possible to register a diff viewer for the pbix file extension which would unzip both sides and then do a text diff.

    • @LandscapeInMotion
      @LandscapeInMotion 3 роки тому

      @@JanekBogucki also, you can use Power BI Premium to view workspace differences to help migrate reports.

  • @markgriffiths9714
    @markgriffiths9714 3 роки тому

    Thanks Adam, good to know there is integration with DevOps in the future. In regard to OneDrive, isnt there a way to link OneDrive to a workspace and by saving or updating the pbix file to OneDrive, it would sync to the workspace? Or did I imagine it!! At the moment we're just using sharepoint for version control.

  • @fluffigverbimmelt
    @fluffigverbimmelt 2 роки тому

    Thoughts? Easy.
    As long as pbi does not have source control, using it relies on some external software/management process. Otherwise using it is really amateurish and error-prone.
    I mean, if anything goes wrong, but does not turn up in a dev pipeline (or there is none), it can't just be rolled back.
    This feels so wobbly in our daily work.

  • @cbovikings
    @cbovikings 3 роки тому

    I just want a modified timestamp of the report in the service so I can see if it is the latest version. I tell my clients to do source control typically in SharePoint Online document library with version history but this often isn't the case when they ask me to update their report.

    • @pabeader1941
      @pabeader1941 3 роки тому +1

      You could put a V1.03 type of thing in a corner. Just make sure you update it if you make a change.

  • @h4tt3n
    @h4tt3n 3 роки тому

    In the mean time, Tabular Editor is licenced software that you have to buy.

  • @iiiiii-w8h
    @iiiiii-w8h 3 роки тому +1

    Did your editor fucked up by confusing div with diff?

  • @1yyymmmddd
    @1yyymmmddd 3 роки тому

    What is the point of voting for an idea for developers when Microsoft clearly focuses on ideas for end users ?

  • @robertbarkovicz800
    @robertbarkovicz800 3 роки тому

    Power BI is a great product, but the oppertunities for ALM and version control is embarrassing, not only pbix file, even more for dataflows!

  • @DarcyWhyte
    @DarcyWhyte 3 роки тому

    haha, you mean "diffs" not "divs" right?

  • @CallousCoder
    @CallousCoder 3 роки тому

    All these COTS click and drag crap have the worst integration (specially granular) are terrible. And it’s sheerly moronic to develop these obvious model, view, controller parts as a single binary. MiroSUCKS stupidity! I always separate my systems in loose controllers, loose models and loose view components.
    Also for the sake of ultimate flexibility and cooperation with other devs. I’d never use Power BI after seeing this. It’s just not enterprise grade in my opinion.

  • @PeterSchott
    @PeterSchott 3 роки тому +3

    I know at one point, we'd saved them as templates just to have the versions without all of the data, but still can't "diff" those. I appreciate the tips here and look forward to true versioning/diffing at some point. :)

    • @sau002
      @sau002 3 роки тому

      I found this to be a big challenge. No easy solution. We have settled on ALM Toolkit. Considering that Microsoft has not shown any intention in simplifying the model structure to help "diff", I find that the ALM Toolkit does a decent job.