PowerBI.tips

Help! How Do We CI/CD - Ep. 514

March 27, 2026 By Mike Carlo , Tommy Puglia
Help! How Do We CI/CD - Ep. 514

Mike and Tommy spend this episode unpacking the messy reality of CI/CD for Power BI and Fabric teams. They work through the overlap and confusion between deployment pipelines, Git integration, Azure DevOps, and GitHub, with a practical focus on how teams can move toward safer and more repeatable releases.

News & Announcements

  • Submit a podcast topic — Mike and Tommy point listeners to the show submission form for future questions and topic ideas. If you want a future episode to tackle a real-world Power BI or Fabric problem, this is the path they are actively promoting.

  • Subscribe to the Explicit Measures podcast — The show page collects the main podcast links and helps listeners follow new episodes as they drop. It is the simplest landing page to share when someone wants the full backlog instead of a single YouTube stream.

  • Join Tips+ — Tips+ is highlighted as the broader community and resource hub around Power BI.tips content and tooling. For listeners who want more than the public podcast stream, this is the membership path they call out.

  • Mike Carlo on LinkedIn — Mike’s LinkedIn is one of the easiest ways to follow the experiments, projects, and AI-heavy workflow ideas that often show up in the podcast. It is also useful for keeping up with the broader Carlo Solutions point of view.

  • Tommy Puglia on LinkedIn — Tommy’s LinkedIn is a good follow if you want more of the engineering and practical delivery side of the conversation. His posts and demos tend to reinforce the same applied perspective that comes through in the show.

Main Discussion

Topic: CI/CD for Power BI and Fabric teams

This episode centers on the practical gap between how teams want deployment automation to work and what actually happens when reports, semantic models, pipelines, and environment differences enter the picture. Mike and Tommy use a listener question to untangle the difference between Fabric deployment pipelines and Git-based workflows in Azure DevOps or GitHub.

  • Deployment pipelines were originally created to help teams move content across Power BI workspaces before Git integration existed in the product. They still solve a real problem, but they are not the same thing as source control.
  • GitHub and Azure DevOps both sit on top of Git for this conversation, so the bigger distinction is not the brand name — it is whether you want artifact history, branching, pull requests, and file-level review.
  • The discussion highlights how CI/CD in Power BI is not just about moving files between environments. It also depends on having a sane model structure, clear workspace purpose, and a release habit the team will actually follow.
  • One of the key tensions in the mailbag question is granularity: once a PBIP/TMDL-style project exists, teams naturally want file-level control over what gets committed and promoted. That is where Git-based workflows become much more attractive than a one-click deployment story.
  • Mike and Tommy also underline that the safest automation usually comes after the team has simplified its process. If the underlying deployment shape is chaotic, automation just helps you break things faster.
  • The practical takeaway is that teams should choose their path based on the kind of control they need: deployment pipelines for easier environment promotion, Git workflows for more nuanced engineering discipline and review.

Looking Forward

The practical next step for most teams is to simplify their deployment shape first, decide how much review and file-level control they actually need, and then automate only the parts of the workflow that are stable enough to trust.

Episode Transcript

0:28 Good morning everyone and welcome back to the Explicit Measures podcast with Tommy and Mike. Good morning Mike. How you doing? I’m doing well. I got a little bit of a story here, but I’ll tell you as soon as we announce our main topic for today., not really a beat from the street, just more of like a funny anecdote., and we’ll go there., today we’re going to talk about help. How do I do CICD with Timed and PBIR in Azure DevOps? Very specific topic., topic., if you do if you learn anything from Tommy and I, we are very big fans of Git

1:00 Tommy and I, we are very big fans of Git and Git integration. Mhm. As I push more into it, the more I love it. The more it’s making me easier to build things. It’s it’s making it easier for me to work with agents and have agentic development cycles with things that I build with Power BI. Love it. It’s just going to be to me this is you’re going to use AI and agentic development experiences. It’s going to happen. Yeah. You need a fallback. You need a a way of being able to safely build things that will crack and break and fall apart.

1:30 and fall apart. This is where we start really going deeper on CICD. And this is a a technology that I think has been existing for software developers for a very long time. It’s like,, Linux is built on top of this. This is what this was designed for. Really good solution. on top of Git? Well, the the creator of Linux, I think his name is Linus, well also created Linux and then also was part of the creation of Git in general. Git was developed so he could have many people work on the same project together and pull code together. So it’s like it wasn’t Linux is built on Git,

2:01 like it wasn’t Linux is built on Git, it’s more like Git was required to be able to build Linux in a good way, which now Linux is like the world’s largest prolific free software. It’s everywhere right now. You want to shock your world? Go look up the guy who created Linux and just a documentary of his workstation. Oh, it’s like a the single it’s a single machine. machine. seen this. It’s by far it and it’s like this is the man who literally still runs Linux or in a sense like he puts the updates out there. And it’s just this guy with like what looks like a laptop on a temporary, like a pulled

2:32 on a temporary, like a pulled out table out table and that’s it. And I’m like, I got five screens. I have to get more GPU. I got [laughter] computers and that thing. And this guy is like, no, I basically run the world’s number one operating system from my like,, Windows 92. machine. Yeah, single machine. I’ve heard him talk I so Linus Tech Tips is a com is a website that I I watch. It’s on YouTube. And they actually had Linus, the creator of Linux, on Linus Tech Tips. They’re both named Linus. And he was going through

3:02 named Linus. And he was going through and they’re talking about things and one of his comments that he made I thought was really funny and I enjoyed watching it. It was it was entertaining, very entertaining. Was anyone who wants to build an operating system is just ready for pain. It’s just difficult. It’s hard. It’s not easy. There’s bugs all the time. There’s things just don’t work very smoothly. It’s just very complicated. And he goes, I wouldn’t wish that pain on anyone, but he would do it again in a heartbeat cuz that was like but think of it this way. It was some

3:32 this way. It was some to order to be able to do this you’ve got to be extremely passionate about what you do. And on one hand, he’s a he’s been a great individual to contributing so much to the computer space in this world around his his contributions, but look think about what he’s done. Oh, yeah. He’s he’s built billion dollar companies on on the backs of his open source free software side of things. things. And and people have monetized on this thing. And I look I know look at this going going man, what a what a thankless job.

4:04 man, what a what a thankless job. Being able to do all that work and see all the companies making money on your software, how it’s deployed, how it rolls out. some scratch from this. I’m sure he does. These speaking engagements are probably really good and like he can he doesn’t have to work if he doesn’t want to, but he chooses to. This is the interesting part. He’s choosing to still have the single workstation. He’s choosing to still develop and build code and software and build on top so that’s just a very interesting to me. And I feel like that’s a little bit like the podcast. [laughter]

4:34 [laughter] We get nothing from it. It’s not an operating system, but we just do it because we love it. We would do this regardless. Now, I don’t know why he never went what he seems like a what if guy. He asks a what if question in the rabbit hole he builds something, but he never said, what if I had a second monitor? No. No. Ever. Ever. Again, dude, I want somebody to check his basement please. He probably has like 18 monitors please. That’s is Mike, if I told you would you rather go from all your screens

5:05 screens and but you still got to keep GitHub or or you keep GitHub, but you can only go on your surface ever. No other monitors. Which one are you picking? I have to go to go I have to go with I have to go with GitHub cuz it’s going to be the way of doing things. But like But it’s painful to choose. I’ve become so lazy when it comes to like opening windows. I have it’s funny. I look at different people’s computers like every so often like they’ll share screen or whatever. I can see how many windows people have

5:36 see how many windows people have open on their machine every so often. And I think there’s a personality type of people who have way too many windows open. open. And Tommy, let me ask this question. Now here’s here’s one that’s going to create controversy. Tommy Okay. Okay. If I go look at your browser and you pull up your browser how many tabs do you have open on your browser? Now let me guess. Don’t don’t say it to me. Tommy, I’m going to guess if you if I go to your browser if throughout your work day and Tommy’s doing something, I’m going to guess your browser is going to be chalked full with tabs all the way

6:08 be chalked full with tabs all the way down the top of the ribbon. Does it scroll horizontally? [laughter] I’m I’m going to guess you’re going to have a lot of tabs on your ribbon because Tommy runs in context windows. There’s going to be lots of windows open and you’ll be like, over here, over there, over here. Grab this. Open this page up. New page, new page, new page. I’m going to guess you got a lot of lot of tabs open. So let me let me pass it to you. How many tabs do you hope it have open in your browser? You’re right and wrong at the same time because you are considering a mess of 100, 000 tabs.

6:38 100, 000 tabs. Not or organized, but lots of open. They are organized. Tabs group. That’s the difference. I use AI tooling to organize my tabs. What? Oh, my friend, do you not know about this? Ask me about my tabs. Yeah. Ask me about my tabs. Ask me about my tabs. How many tabs do you have open, my friend? Three or four max ever. At the time? No way. At the time. I don’t believe that. What I do though is I have

7:09 What I do though is I have 18 windows. Well, [laughter] I have I have three or four tabs open at one time. If I get more than the like the, when you put your window up the screen. If I get more tabs than the browser window can like hold, I start closing things. I I get rid of stuff I don’t need. And I I have maybe two or three maybe four different browser like browser sessions open. And across them I’m like it’s it’s very to me it’s very contextual, right? I’m working on this. These are all the tabs that

7:40 on this. These are all the tabs that apply to this task. And I put them all in that thing. And then when I’m done, I physically shut the browser down. All the tabs disappear and I’m done. That task is off. I go to the next thing. I know. I know. It’s really weird, Tommy. I’m very single threaded in that regard, but I have,, I’ll have three different browsers all all Edge, right? Edge one, two, and three all on my screens. And I may have a fourth one laying around somewhere, but I’ll have like Outlook on one. I’ll have a calendar on another. I’ll have a lot of them laying around. I just won’t really do like

8:13 won’t really do like tons of tabs in a browser. Yeah, for me they are links. So I I always have a group of GitHub repos I want to explore because I use something called GitHunt that always has like the most popular in a week. You can choose a language. And Mike, I have this problem where if I find out like a link or like something I want to look to, middle click’s my friend because in my head I cannot lose the memory of this. I need to like I need to go back to this. I don’t want to go I’ll get back to this. I’ll forget it. So I have this inability to stay

8:44 it. So I have this inability to stay I’ve seen that, too. Yeah, but it’s the same thing. I’m really big on right now again, GitHub has been like my new social media channel. Right. It’s not, but it is. So I go to GitHub now like I go to like I used to go to like X or YouTube now. I’m constantly on Git. Here’s something that oh sorry, this is totally random. This is maybe a beat from the street. We we’re moving to something new now. So this is this is like some news thing. We moved from something new like 7 minutes ago, but yeah. True, probably right. right. let’s think of it I think of GitHub now

9:15 let’s think of it I think of GitHub now because because the fact that agents are now building a lot of code. Mhm. Okay. There’s a trend or a shift that has happened in code writing. If I go to my company and look at all the team members in my team and I can see which Git repositories have been made by agents, which ones have not. I can immediately determine which ones have been made by agents because the readme file is robust. File structure, what this is here for, what we’re doing, all the things. I’ve instructed my team to say, look, use the readme file as context for the agent. When you show up,

9:45 context for the agent. When you show up, it’s going to need to know what it needs to understand about your project. So for me me anytime I see a readme that’s well written and robust, it now points to an agent is now working on that repo. Mhm. Let me bring this thought further and say say yeah. Now that we have so many more agents building stuff and my my LinkedIn or my X feed is now inundated with all these new repos and people talking about these projects they’re doing and I’m excited. It’s

10:16 they’re doing and I’m excited. It’s really exciting me. And now I click on their GitHub and I go to their page and now I’m reading all of their documentation on the read me page. It’s becoming becoming like so important to me. Like if you don’t have a good read me, your project’s done to me. I don’t even want to care about it. Like I’m not going to dig through your files to figure out what’s going on. I’m going to look at the first page. And now I use the GitHub bookmarks religiously. Like oh. Everything has a folder. Every to your

10:43 Everything has a folder. Every to your point, Tommy. I don’t want to lose this. I need to hang on to this. This might be something to come back to. Oh, right now I’m exploring a whole bunch around custom agents. So I now I’m acquiring all these like who’s making custom agents? Let’s collect all those. So now I’ve got a whole custom agents folder of like I’m the UX designer. I’m the. NET developer. I’m the C# developer. Like all these custom skills or custom agents that are designed to do a specific thing. I’m now really focusing in on okay, how do I get custom agents to build out what I want? I’m about to

11:14 to build out what I want? I’m about to go to level seven of nerdiness here with you off of what you just said, which you may enjoy. So come with me here because you ever heard of user scripts? They’re basically like Chrome extensions, but it’s basically JavaScript that will run on the computer. People create their own scripts, but obviously we know AI and it can just like integrate like for example, extend ChatGPT’s user interface to save prompts or user scripts. Really cool stuff. Never heard of this. And obviously there’s a ton for GitHub. So I wrote a few or

11:46 So I wrote a few or [clears throat] I I AI my bot AI my bot Okay. Like for example, whenever I look at a repo with a lot of forks and for people who don’t know, a fork is someone basically taking a clone of the repo, but extending it. One of them like oh that’s cool. I’m like I wonder what people done with this. So I have a script that goes and extracts all the forks, finds the latest latest forks. Like who has built more updates from that repo? Yep. Yep. And also there’s one that will

12:18 Yep. Yep. And also there’s one that will basically make it a chat make the AI the GitHub repo chatbot. Like a chat you can just talk like hey, what what are people building? Yeah. And it will tell you what changes diagrams it out. So and and because for me Mike in the same way like GitHub I would I would choose the same going way back to the beginning here. I would choose give me GitHub. I’ll hit take one screen, but I’m not going to like that choice. choice. Mhm. So all that being said, I think we need to probably just get into the top topic here because we got a good one. I

12:49 topic here because we got a good one. I agree with you, Tommy. I would like to as a as a as a as a a challenge to you maybe Yeah. I would like you to take your script thing that you’ve built. I’d I’d be interested in looking at what is Open Claw doing these days? Open Claw has a really big repository. It’s got 270, 000 likes, Tommy. Tommy, I’ve never in my life of working on GitHub, I have never seen a repo go from I think it was like November, December. November, December till like now 270, 000

13:21 November, December till like now 270, 000 likes. People are clamoring to get at this stuff. It’s got over 5, 000 pull requests. It’s got over 200 620 branches on the on the code. Like this thing is insane. It’s a it’s a monolithic beast at this point. And I it’s got 51, 000 forks of the code happening. I would just be curious, Tommy, what is your script that I’ll let you just take that as a side I I will do that now, but I’ll tell you the GitHunt that looks at the most popular repos. Yeah. Six of them already

13:52 popular repos. Yeah. Six of them already seeing are repos for Open Claw. Open Claw master skills. Open Claw guardian. Open Open Open Claw diagram skill. Open Claw backup. Like so yeah, it’s taking over, but dude If that’s the most popular stuff on GitHub, like we are hitting like this to me this is like a new the assistant AI is hitting a new velocity here and this is like when you give your AI capability to build things and do stuff and make files and change things and do things on behalf of you, that’s what people have been clamoring for. I’ve been saying this since day

14:22 for. I’ve been saying this since day one, Tommy. We started seeing large language models and I was always like it needs to do things. It doesn’t do stuff. It just I can talk to it, give me answer. I said the real power this was when it can then execute on your behalf, which is super exciting. Yeah. Yeah. All right, anyways, let’s get into our main question here. Tommy, let’s go through the main topic. If you wouldn’t mind, read us our episode topic here and we’ll unpack this. All right, so can you do an episode on using deployment pipe pipelines with Fabric versus Azure DevOps and pros and

14:53 Fabric versus Azure DevOps and pros and cons of each? One question is even though we have a PBI file, PBIP, still required to check in the entire artifact versus components of a artifact. For example, if I modify one. tim file JSON file that that’s really one of the other one. tim file and I wanted to check it in and modified another one and did not like one file of the. tim file. Yeah. Yeah, that’s how I read that. And so if I wanted to check in one file and wanted to check it in and modified

15:24 and wanted to check it in and modified another, but did not want to check it in. Yet I’m not sure how to do that now. I assume pipelines in Azure DevOps allow for more advanced and nuanced deployment capabilities. Also, if I use deployment pipelines in Fabric to deploy one time, can I use a pull request in I do or in Azure DevOps the next time? Yeah, Azure DevOps. So you you just said DevOps and then and Azure Dev is the next time or does it cause an issue? So here’s a few I think misconceptions in the mailbag

15:54 think misconceptions in the mailbag here, Mike. But I see where the user’s going here in terms of yeah. Let’s get our audience up to speed on like what like every time Tommy, I feel like I’m going cuckoo. I’m constantly [snorts] and I’m constantly saying words that people are like what are you talking about? Like if they’re if I was talking to anyone else non Power BI in the space. What? What? The things I say DevOps branching, GitHub. Like all these

16:24 branching, GitHub. Like all these words like they don’t mean things to people. Like they don’t people don’t grab those words and be like oh, I know what you mean by that, but we do cuz we use them in contextual things. So To further to further point that my best friend I’ve known for 30 years now, I’m like just known him since third grade. I called him about anthropo like some of the things I’ve been building with skills. Yeah. I’m like no, I was using DevOps and no, we’re using Claude built the skill and he started he started just bursting. I was like was like what are you saying? What are these words? Yes. Yes. And to him it to him it sounds like I did zippity on zoop a doo

16:56 sounds like I did zippity on zoop a doo and and Yeah. Yeah. Yes. It’s like we we sound like we’re talking a different language. Like literally, Tommy, we are talking a different language at this point in time. yeah, so let’s break down some of the main because we have talked about Git quite a bit by now, but I think there’s some new things that the mailbag is introducing here. Yeah. So let’s let’s go through a couple things. I want to just I’m going to lump Azure DevOps and GitHub into the same bucket. bucket. same. Yeah. Okay, because whether you’re using Azure DevOps, there’s a couple advantages of using

17:27 there’s a couple advantages of using Azure DevOps over GitHub. but GitHub and Azure DevOps are doing the same thing. That’s what with the mailbag is this correct? Everything can be accomplished in both. And to be clear, Fabric already a Fabric and premium per user, let me be very clear. Fabric and premium per user workspaces integrate easily with Azure DevOps Mhm. and GitHub. There is no other integrated providers. Bitbucket Bitbucket GitLabs. They’re not integrated

17:59 GitLabs. They’re not integrated directly into the product at this point. So when I’m talking about so I’m really just but under the hood, right? Azure DevOps and GitHub, they’re both using what we’re going to call Git. g i t t So So that is the technology that we’re talking about when we talk about Git integration. All right, anything else you want to add there, Tommy? No, I think that to me based on the question to your point, Azure DevOps does have some other

18:29 Azure DevOps does have some other features, but based on what the user’s trying to do here, you can accomplish both in GitHub or Azure DevOps. I think it’s no secret though for you and I, our preferred system of choice is GitHub. GitHub 100%. We would use it all day, every day. Okay, so let me get that out of the way. Okay, another couple introductions here are deployment pipelines. I think we need to clearly define what is a deployment pipeline and some of its features first because I think there’s overlap

19:00 first because I think there’s overlap between what deployment pipelines do and what the Git integrations will do. What do you think about that, Tommy? Is that fair? let’s dive into that. Yeah. So this is something that’s been around for how long now? Oh, actually quite a while. it was out before Fabric I think was out. Deployment pipelines? Oh, yeah, yeah. I’m trying to think. It was definitely after data flows gen or gen one. And in a very basic stage to be I And in a very basic stage to be to bare bones it Mike mean to bare bones it Mike deployment pipelines to me were created

19:31 deployment pipelines to me were created because there was no Git integration in Power BI initially. Well, let’s That’s how I see it. Yes. Yes. I want to I want to go I want to go a little bit farther than that, Tommy. Like I want to go back at let’s go to like, hold on. You You mail. [music] There, I hit the wrong button. That’s the one I wanted. I want I want the the the sound. All right. So, imagine back in the day, Tommy, when we had only Power BI workspaces,

20:01 Power BI workspaces, and we were using workspace apps. Right? I’m going to call them workspace apps, but the app. We didn’t really get any ability for us to be able to deploy something to a team to test something and then a team to go to production. All we had was the workspace, a semantic model, and a report, and an app. That was the all the extent that we had. So, then people started saying, “Well, what I do is I download the files from dev, or I have a file that I publish into dev. That way people can like work

20:31 into dev. That way people can like work on it and you have a a collection of it.” it.” Then, I take that file and I download it, and then I swap it out with some magic stuff, and then I publish it into test. So, we started he seeing this evolving pattern of I need different workspaces because each workspace has a different surface area of control around who should see the information, right? Dev is for developers. I want developers in there building new things. I want to download those things and republish them to the next environment. So, a lot of this was download, publish, download,

21:01 this was download, publish, download, publish. And you would do that across all different environments. The other trick of this was we had a thin report and a Power BI model. In situations where I could download the model, I remember in the early days, Tommy, I would make parameters for like the SQL database. So, you’d have SQL dev, you’d have SQL dev, SQL test, SQL prod. prod. And so, I would download the file, update the connection strings, you would

21:26 update the connection strings, you would with like a drop-down menu. Not that I’m not hand typing things in, but I would have a drop-down menu and I would switch it to, “Okay, I’m going to publish to test.” Figure that part out. And then go push over to the next environment. Okay, I’m going to go push to test to test this item with a new connection string. I need to refresh it and then publish it. And then in the service, it will then automatically refresh itself. This was the process before deployment pipelines. Yes. Okay? Okay? And really, the, in a bare-bones

21:56 And really, the, in a bare-bones way to think about a deployment pipeline, it’s it’s a promotion system. system. Yes. Yes. yeah, that’s the most bare-bones way to think about it. I have I I always worked in a dev prod environment in terms from the very beginning of Power BI, and I don’t want to make changes that everyone’s going to see. Yes. But to your point, I don’t want to have to have these in really two individual artifacts of a report in dev and a report in prod. So, this allows me to simply say, “Okay, dev’s good. Let me push this to the new workspace.” Or,

22:26 push this to the new workspace.” Or, rather, move that artifact to the new workspace. And that’s really where the power of deployment pipelines was, where I know I’m going to have these two workspaces linked. A dev workspace that will always be promoted to the next level. And but in the beginning, you could only have three. Now, it’s custom. Yes. But let’s say let’s again, to make it simplified here, I have these changes I made in dev. I’m working on a report that exists in production, but I’m doing it in the dev workspace. Once we’ve verified it, it gets promoted, all those

22:56 verified it, it gets promoted, all those changes, to the production workspace. Sure. Yes. Yeah. So, all all of this to say is you’re right, Tommy. I like this. And then and the neat thing about this, too, is I could publish independently the model or the report. So, okay, let’s go back to this concept of like, okay, I have things that are interconnected. Let’s just talk about one workspace right now, and let’s unpack that, and then we’ll go into this. So, all these I think are fundamental to understand what’s going on here, because when we step into like DevOps pipelines, Tim Doll check in and check it out, all this

23:26 Doll check in and check it out, all this stuff pertains, okay? Here’s another key point. Whenever you make a thin model and a report, Mhm. the model and report have a connection, the the live connection. The report runs, and then it just connects, and it’s it basically it’s connecting back with a live connection back to the report. The live connection is neat because I can then take that report and move it between dev to test to production. The trick of this is when I did that without a deployment pipeline, the thin

23:56 without a deployment pipeline, the thin report would still be connected to the dev in semantic model. Like, so there was there’s literally in the report a connection string that says, “This is what I connect to when I connect to the analysis services or the semantic model, this is the model I’m going to use.” And if you didn’t update that in the pipeline or part of your deployment, you would not be able to move the thin report from dev to test and have the test thin report pointing to the test semantic model. Right. This is the fundamental piece that is so tricky.

24:27 that is so tricky. You have to reconnect every item in the workspace across environments. That’s the secret sauce. Right. So, when you have a deployment pipeline, the reconnection of those items from dev to prod happens automatically on certain items. items. So, it’s not automatic on everything fabric, but for most of the Power BI items, it’s pretty much automatic. Also, but deployment pipelines, one thing that was mentioned in the mailbag, this is

24:58 was mentioned in the mailbag, this is all still in the world of PBIX. Yes, but it doesn’t not PBIP. Like, so the PBIX, yes, this is all pre-PBIP, Power BI project files, which are now a new thing. I will also argue here, too, before the PBIP project came out, Matthias Tierbach revolutioner in the standpoint. Actually, he’s the one who made up the Tim Doll stuff. Matthias was actually ripping apart Power BI files, PBIX files, into their

25:28 Power BI files, PBIX files, into their individual components to actually check things in. So, this is this is another whole concept of like, well, if you’re changing a report or changing a semantic model, you likely are not changing the entire definition of the report. You’re adding a visual or making a new page. You don’t really want to touch everything else in the report. You only want to touch the things that you modified in your page. And so, having one monolithic file, like a Word document, right? Every time you open the Word doc, you’re opening the entire thing. And you edit something, and you

25:59 thing. And you edit something, and you save it, and it goes back to one single object. object. Right. The Power BI report and the Power BI semantic model are actually not that. There’s actually lots of little pieces that can be all pulled together. So, that’s the the neat thing about this Power BI projects, PBIP, that allows you to see different sections of code. Great point there, Tommy, to call out as well. Yeah. And I I think this the reason I bring that up, too, is the scenario is give it let’s say a scenario, you’re working on a semantic model, you updated DAX in a table, or maybe Power Query in

26:29 DAX in a table, or maybe Power Query in a single table, or maybe multiple tables, but you only want to test the changes in production with one of those single changes. In PBIX, it’s binary. So, all changes all the time will get pushed over. Even if you’re like, “I just want to make sure this one change I made in DAX, like this one formula, even though I’m still testing other things.” You did not have that ability. It was an all or nothing push. Which is, there’s that’s a big limitation, but PBIP and PBIR

27:00 PBIP and PBIR or really, Tim Doll has changed, dare I say, Michael, one of the most significant changes to Power BI’s history is changing to PBIR and the PBIP format, having the formulas., Yes, that that is a that is a fundamental shift on how we’ve been building things traditionally with Power BI. 100% agree with that one. Right. I BI. 100% agree with that one. Right., I I’ll put it in the top three of mean, I I’ll put it in the top three of game changers of all time for Power BI. I might even go higher than that. What

27:30 I might even go higher than that. What what would be What would be bigger than that change? Test flows. No, just kidding. Oh my gosh, Tommy, come on. I know I know. I know that’s a joke. I know that’s a joke. joke. I put a metric sets. but Tommy. but no, honestly, and I don’t put fabric part of this because I’m saying Power BI specifically, I would say as of right now, I would say this is the Tim Doll format and the PBIP format is the most significant change to Power BI in its history. I I would argue

28:02 in its history. I I would argue fundamentally, nothing has shifted development or capabilities of development larger than that. Like, nothing in the visual, nothing in Power BI Desktop,, a lot of interesting things around the model, like,, DAX Query good tools, PBI Tim PBI Tim the single most largest change we’ve ever had, I think, has been the PBIP project format, and then going to Tim Doll, and going to Power BI report files that are all just JSON stored as smaller files. That

28:32 JSON stored as smaller files. That that’s a that’s a huge fundamental change. And and I think that’s it’s going to help us to be a lot more capable to be able to do these other advanced things. Okay. I think we’ve talked about everything here. Yes. other thought I could could maybe bring out here that was also relevant for their audience to know is the integration of Git to a workspace. So, everything we’ve been talking about now is how do you move things So, deployment pipelines move items between workspaces. No Git required. Right. Move

29:03 workspaces. No Git required. Right. Move a report, move a semantic model, rebind them as you need to. We get it. The GitHub or Azure DevOps integration happens directly to a single workspace. So, you get one branch of Git connected to one workspace. That’s how it works. That’s the state of those files. That branch looks like those files in the in in Power BI. I’d also argue, as soon as you integrate Git on the workspace,

29:33 Git on the workspace, the workspace becomes not the source of truth. You actually shift, in my opinion, the source of truth away from the workspace into the integrated Git repository. So, what do by this? When you go into a workspace, let’s just say Tommy, I have a workspace, I add the get integration and I modify the report file. file. Add a new page. Add some visuals on a page. page. In the workspace, it will say this report is uncommitted, meaning the get

30:03 report is uncommitted, meaning the get comparison, the the get integrated item for that report is different than what you have saved in powerbi. com. The UI in powerbi. com will prompt you to commit those changes to the branch. And at that point, you synchronize what the get is saying is truth and what your workspace is saying is truth. Until I have this, Tommy. Just total random side note. Until I have the get integrated workspace,

30:33 integrated workspace, I’m not letting anyone build in the service. Bar none, full stop, don’t do it. it. Okay, and I I know that because you have the limitations, but a more bare-bones way is the workspace has been downgraded just to another client. In the same way, let’s say you and I have cloned a repo, that’s what workspaces are doing, too. It looks to see if there’s new updated changes, it pulls Correct. It’s like a clone. those requests, and then it can also push. But it’s all going to the repo in the same way if I worked on my machine.

31:04 the same way if I worked on my machine. Yes. It’s basically just another machine now that cloned a repo. That’s a great Now, with limitations Yes, there are some limitations that happen there, yes. And you don’t get to see like there’s a little bit more detail you get out of using VS code, using it on your local machine. You get a little bit more you get a little bit more hands-on with what changes are being made. In the service, you get a I’m a higher-level lightweight version of it. But in the same fashion, if I did make a change in the service, let’s say I updated a report, I’m going to see I need to commit those changes. And then my computer is going to say, “Oh, there

31:35 my computer is going to say, “Oh, there are new there’s a new commit. We got to update that new commit that came from the service.” Yes. But to your point, the central part here is the repo. It is not the workspace. Correct. And I like that, honestly. That’s that to me is like the place where I really I really enjoy this now. So, when you have the get integration, that becomes the story of truth. Okay. So, now we’ve talked about the get integration with workspaces, we’ve talked about the deployment pipeline pieces, we’ve talked about by adding get, you’re shifting the story of truth to some place, right? Okay. Now, let’s address the question

32:07 Okay. Now, let’s address the question here cuz I think this is this is setting the playing field of like what we understand to be true and how we mentally think about workspaces, get, and integration. Right. Right. So, we’re going back here to the question here. The question here, for example, let’s go to the example part. Mhm. Let’s say I edit one file in the timdel. So, I’m going to edit some measures. I’m going to edit a table, right? I’m going to edit some definition. And it’s And the thing I want to correct here a little bit, Tommy, is timdel is not

32:38 little bit, Tommy, is timdel is not JSON. JSON. Timdel is timdel. It’s a YAML-like structure. Big big distinction there. It can be transformed into JSON, which it does. It it helps there, but it’s not JSON. JSON. Excuse me. go ahead, Tommy. Take it away for here a bit. I need to cough for a bit. Okay, no problem. So, timdel is the preferred way because it’s it’s user-friendly and computer-friendly. JSON is very much computer-readable, but if I want to make a change to the timdel or more im-

33:15 All right, I’m not sure what happened with Tommy’s audio, but it cut out there for just a second. I’m guessing Tommy will be back here shortly. So, he was talking about timdel and JSON files. So, timdel is a nice easy-to-edit format that will let you edit the different files. and then let’s move back into back into the other items here. Mike, I think your cough turned off my computer. computer. know what happened, but we’re back now. and then it just blacked out, so that’s what

33:45 what Quite that’s quite the cold. That was amazing. I don’t know what’s going on. But anyways, that being said, going through the timdel piece, you’re explaining some timdel pieces, and timdel is a a series of smaller files that describe parts of a larger schema that is the semantic model. Okay. All that being said, we’re going to go back to the timdel file editing. So, I modified a portion of the timdel or one of the files that are from timdel, and I want to check it in in and and modify check it check it in

34:15 and and modify check it check it in and modified another file that you did not want to check in. So, like imagine this, this, there’s 10 files that make up the timdel thing. You edit file one, you you edit file three. I don’t want to change file three. I only want to change file one. This is exactly what check-ins do or committing does [clears throat] when you’re working locally. This only becomes exposed to you when you are in desktop or VS code or sorry, not not power BI desktop, but like a desktop

34:45 power BI desktop, but like a desktop application. In the service, you can’t go edit individual timdel files from the service. Right. Right. powerbi. com Right? Everything you’re describing here is a get integrated desktop experience for editing files, which is fine. 100% agree. What happens in this scenario? Like, Tommy, if you edit your if you pull down the repo to your local machine and you make an edit, you can easily commit one file out of all the

35:16 easily commit one file out of all the files back to the repo. What would you then see, Tommy, in powerbi. com? I’m going to kick it back over to you. If I saw one file versus the whole repo? I’ve brought down I’ve brought down the repo for me locally. I’ve modified one of the files, and then commit it back to the repo. What would I see in powerbi. com? You’re going to see that some some artifacts are changed, but I’m not going to be able to see the code if I’m in the workspace view. Yeah, you’ll you’ll see the model change. the whole model, but I don’t know what changed.

35:46 changed. You can’t see the change. Yeah. And then you’ll you’ll be commanded to say, “Look, “Look, your repo your repo a merge error, which then you say which one do you want to overwrite, which is I hate that. That happens at the time of commit, though. That doesn’t happen at the time of pushing back to the repo. No. Oh, true very true very true. So, yeah. So, but you can see this although in the repo, though. I can go through and see this. So, I [snorts] have a hot take. the the repo will be different than what is in the workspace, and it will say, “You need to synchronize your workspace

36:16 “You need to synchronize your workspace to match what’s in the repo.” That’s what will come up. So, the the the message here is again, the repo has now shifted to the source of truth, you’ve now modified the source of truth. So, everything you describe here in this example, for example, I model one file, I don’t want to edit all of them. Great. If you’re doing that, you need to do it in VS code locally on your machine to a connected repo. That’s it. That’s what you do. Yeah. The repo is then can be that branch of whatever you’re talking about can be synchronized to the workspace, and then

36:47 synchronized to the workspace, and then you’ll get a notification in the workspace that you need to update. And there’s also API calls that you can do on this as well. So, you can commit something to a branch, and then that branch can then be there’s an API call they call an action. So, in get in Azure DevOps, you can do actions there, or in GitHub, there’s a GitHub action, and you can say, “Okay, when I commit something new to main, go ahead and push those changes down to the workspace so people can see those changes and basically deploy your change into the workspace.” And none of the things you’re saying here have anything

37:17 things you’re saying here have anything to do with deployment pipelines at this point. point. 100%. And this is where my think my hot take is. Okay. You ready for this? Let’s hear it. Deployment pipelines are get want to be. It does I do not think there is a for me a path where deployment pipelines and get work well together because get can really accomplish everything a deployment pipeline can. Now, there are some additional setup I think from the parameter side of things, but hey, GitHub actions, and hey, you got AI, so

37:48 GitHub actions, and hey, you got AI, so done. done. And everything that I wanted to do with a deployment pipeline is really what I want to do what I can do in get Mhm. in terms of being able to slightly push. I have branches, and I have the things I want to verify and test. To the person’s question here, I may be wanting to test a single file change, a timdel change, or a table change. Well, in a commit, I can say what I want to add to it. I don’t have to add everything if I’m doing it locally, right? I can say, “Okay, I am

38:18 locally, right? I can say, “Okay, I am updating these bunch of pages, but I only want to update the single page of design.” So, I have that ability and make that the commit. And again, deployment pipelines, you have that ability to an extent, but I don’t have the insight, the back end. It’s harder to verify. So, we are moving if you are a serious power BI developer, you are moving to this software process more and more. Yes. developer process, and that to me is what point deployment pipelines are

38:48 what point deployment pipelines are trying to be. I do not like deployment pipelines. And I’ve done trainings on it, but for me, I know people do rely on it, so that’s why I do training, but I don’t like it. I don’t like the what I feel is the lack of control around it. Everything that so the person asked Tommy. And I would argue, knowing you, I you would under once you understand how all works and how it all stitches together, and you don’t have any So, again, again, what I think you’re describing, Tommy, is incredibly important.

39:18 is incredibly important. And also, if I look at it, it’s also very relevant for it’s really relevant for you to like jump like that is such an important aspect aspect to unpack for your team. Most BI teams do not think like this, and this is where I think is the friction. So, Tommy, you’re thinking like a software developer. You’re thinking of you understand there are hundreds of files that make up a particular semantic model and report,

39:48 particular semantic model and report, and you understand that I can change a couple, Mike can change a couple, and we can merge changes back together, right? That is a very legit sign Linus Linux way of doing things. That’s the whole purpose of this. The whole purpose of this this an MVP, man. You’re thinking like an MVP. And then it’s fine. That’s exactly what you should be thinking like. Where I find the friction comes from is the business team is not used to doing this. BI teams are not used to having this level of rigor. It’s more about which report did I publish? Right, think about the tools you’ve been using. You’ve been

40:18 the tools you’ve been using. You’ve been using business objects or SSRS and other things that are built You build the one item and you deploy the one item, and you save maybe the the backup of the item somewhere, and you deploy different items. So, it’s it’s literally a totally different workflow of what we’re seeing now with this. So, we’re seeing best practices in software creep into this development process for Power BI. And to your point, Tommy, I don’t have as much of an aversion to deployment pipelines. I see a deployment pipeline the same way

40:48 I see a deployment pipeline the same way you do. It is a Git like structure. But if I had to rearticulate what deployment pipelines are doing, deployment pipelines are acting like multiple branches, dev, test, prod, linking to different workspaces, in addition to actions to replace certain connection strings through the pipeline. pipeline. So, to me, I look at the deployment pipelines and saying it’s a lightweight version of what Git integration does with actions that are, let’s call it,

41:20 with actions that are, let’s call it, post deployment actions, right? If I want to take a semantic model and a report and move it over, and I want to publish just a report, I have to remove the report and reconnect it. The devop the the deployment pipeline does the movement of the physical item and also does the reconnection of that item back to the element back in the semantic model. There’s also an API point that does this. There’s an API that says, “Hey, when you have a semantic model to different spots, you can move the report and rebind the connection.” That’s all they’re using. They’re using

41:50 That’s all they’re using. They’re using this rebind connection. Not every artifact in Fabric has this rebind connection. So, that’s where I think things get a little bit off the rails here is because deployment pipelines are really have been in traditionally designed for reports and semantic models. We have now added Fabric to all of this. And now Fabric has added a whole bunch more items. We need a lot more control. We’re bringing a lot more IT to Fabric, and so we have to make the deployment pipelines the Azure DevOps and GitHub

42:23 pipelines the Azure DevOps and GitHub functions much more capable to build everything. I think we have two questions we Woah, that was weird. I was on the wrong screen, apparently. Go ahead, Tommy. Right. I was like, that wasn’t me this time. So, time. So, all right. So, we’re good. today. Keep going. I think I think AI is really really wanting to actually talk, and it’s just learning how to talk through our podcast. Right, exactly [laughter] right. The AI is taking control. So, I think that we I

42:50 is taking control. So, I think that we I think we have to answer two questions from the mailbag here, and let’s see if we can come to a conclusion. Okay. So, the first one is if I have a PBI file, I’m still required to check the entire artifact versus the components. And what if I wanted to only check a single a file, a single TIM file, and then do the one the other ones later? I he and it’s not sure how to do that. What’s the best approach to do that? The other question we need to answer here is if I use deployment Fabric deployment five pipelines in Fabric deploy one at a

43:22 five pipelines in Fabric deploy one at a time, can I use Azure DevOps the next time? So, can I do a pipeline push motion and then use Git? So, we have two things I think we need to come to what is the practice that we would do and where are the issues? I like how you break this one down, Tommy, cuz I think you’re I think we’re getting there. We’ve done a lot of explaining like how things work, how it all stitches together. You’re right, deployment pipelines operate on the entire item all the time, the whole thing. You don’t get to pick and choose what you want. Right.

43:52 to pick and choose what you want. Right. And then the the Azure DevOps and GitHub allow you to work on individual files, Mhm. and you now have a new concept, which I think people don’t understand, is I now have local copy, and I now have remote copy. Right. So, I can still be on the main branch, but do it only on my machine. And that’s where I’m to your point, Tommy. I’m editing the individual file. I’m editing something, but it’s not pushed to GitHub or Azure DevOps, and therefore it is not

44:22 or Azure DevOps, and therefore it is not implemented into the workspace. Mhm. So, I think that’s the hook here. Yeah, I agree. What do you think? No, I think just the first part here is this is dead simple to me in terms of what approach you go. Actions and and branches. If you have the problem and you’re doing advanced deployment pipelines now where if it’s in dev, here’s our parameter strings,, we’re pointing to the dev server, yada yada yada, whatever those strings may be, be, well, I can do this in Git, and I can do

44:52 well, I can do this in Git, and I can do this pretty easy in Git, where I commit those I have all the commits, and I can selectively choose. On top of that, with GitHub actions, I can say if I’m in the main branch, then,, change these parameters or these strings to be production. So, I can circumvent the pipeline entirely, and on top of that, choose the individual files or individual code,, individual pieces that I want. And for me, that’s the preferred way. That that’s what source control is meant to do.

45:23 source control is meant to do. So, right off the bat here, if I am using PBI or PBIR, the new format, I want to use Git because they were made for each other. And this is the difference here. Deployment pipelines was made for PBXs, more or less. Git and source control was made for PBIR and PBI, or rather the other way around. PBI was made for Git. PBIR was made for source control. That’s why they did it. There would be no reason, Mike, to make

45:53 There would be no reason, Mike, to make PBIR and TIM file if we didn’t have a Git integration. Mhm. Mhm. I I want to also Yes, I agree with all your things. And I want to add to this. Sure. You mentioned something here that I want to I I’m not correcting here, but I’m just going to make sure we’re clear about what we’re talking about. You said when I’m going from main branch and there’s,, I’m on main branch, and I’m maybe pushing things between dev and test. and test. Right. Right. These connections or connection strings are important to understand like what they are. Yeah. How how they work.

46:24 How how they work. And so, this is what Microsoft introduced to solve some of this, which is called a variable library. Variable In pipelines, it’s parameters, not variable library. Came out with Fabric. Yes. Yeah, yeah. Variable library is an item that lives in the workspace. Yes. And you have it’s basically a list of options, right? And here, you can specify a GUID, an item, an ID, a something, right? So, think about this way, if I have that Power BI thin report again

46:55 have that Power BI thin report again going from dev to test, I need to replace the connection and say, “Oh, I don’t want connection A, I want connection B.” Right. library is set up in a way to help you auto move. Okay, well, I know what semantic model is in Right. the test workspace. I know what semantic model is in dev workspace. And on the item, the Power BI report, I don’t want to deploy the report without a variable in there. And so, when it’s deployed in this environment, connect to this thing. When it’s deployed in test, connect to this thing.

47:26 deployed in test, connect to this thing. The variable libraries are meant to help with that. They don’t work everywhere. They’re more integrated than other things. They help with you moving things between different environments, and you can set up the variable library to have defaults. So, it takes the reconfiguration of connections and certain data points out of the deployment pipeline and puts it in the variable library. So, to me, this is the nice secret sauce of helping you replace anything anywhere you want in all the pipeline pieces. Now, I don’t know how I would handle like variable

47:56 know how I would handle like variable libraries and Git quite yet. Again, the variable libraries feels more like a pipeline fix for Yes. Yes. Yes. Yes. something pipelines can’t do, but Git can do automatically. I also don’t want to be ripping through like another challenge here, I guess I would say, Tommy, is imagine I have this Power BI thin report, or whatever that may be, that Power BI report is I want to be able to dynamically switch these strings, but I don’t want to go

48:27 these strings, but I don’t want to go through the individual files and specify this line, this bit of code, this connection. I want to switch this out. So, for me, I want to simplify the whole experience a bit, Automate. I want to automate this. And so, the automation of connection string switching is not very easy right now. And so, I’m there’s still some patterns that I think that community needs to evolve and build out here, which is how do I better leverage libraries

48:57 libraries to switch out anything I want, shortcut connections, locations, connection strings for Power BI reports,, database strings, SQL database string connections. Like, there’s a whole bunch of things I may want to swap between different environments. I think the variable library is attempting to solve that, but it’s not deeply integrated in every single part of the product yet, so we get a little bit of what we need, but not all of it. Right. I know, I 100% and

49:28 I know, I 100% and So, we have a limitation with variable libraries, and I’m always in the proponent if it doesn’t work everywhere, people are going to find hard adoption there. So, I don’t think so., I think I think they’re trying I think the variable library I think variable libraries work for most common scenarios. Like, lake houses, shortcuts, semantic models, notebooks, and Power BI reports. Like, those If you think about like Data flows Gen2 now? Yes., yeah. So, most of the things you’re going to regularly use are supported by variable libraries. So, I

49:58 supported by variable libraries. So, I think Microsoft is literally saying, “Look, we’re going to build variable libraries. We’re going to take a list of all the items that are being created across all of our workspaces and from the most popular item all the way down to the least popular item, that’s the order in which we’ll work on using or building variable libraries. I think it makes sense. I like them. I think they’re great. I still think there are some features to refine and add into them to make it easier for users to use them at this point. still doesn’t That still does not reach the user’s question or not answer it, but doesn’t solve their problem here,

50:29 but doesn’t solve their problem here, even with variable libraries. The first part here, I want to check in something but not the other. This is simply this a switch a switch, right? So, variable libraries are not helping with that. If I want to I want to it’s part It’s [clears throat] solving a different part of the problem that you need to figure out. Yeah. Yeah, [laughter] sure. Right?, it’s it’s Yes, but,, if I’m switching like, for example, like if you’re changing a page in a report, then you don’t need variable libraries. Okay. Yeah. Oh, yeah. if you’re changing the connection string on something and you want that to be dynamic, then that that’s when you need

51:00 dynamic, then that that’s when you need to start applying variable libraries. So, it depends on what you’re changing. I can have those the dynamic in a GitHub action and in an action in a GitHub a repo. repo. You you can It’s an action, but you still need to replace something. Yeah, you can do that in the action what the branch is, replace that value. As soon as it’s committed, the action change will change and substitute. Yes, I’m I’m I agree with you. I’m saying that’s a lot of extra work. You

51:30 saying that’s a lot of extra work. You need to know what the action is. You need to know what file you’re changing and you need to make sure that this file in this environment is the right connection string to the right element. It’s just It’s just more complicated work and it’s not, in my opinion, Tommy, the actions aren’t easily evident on how to do that. There’s I’m going to I’m going to I’m going to play your ball here. I’m going to swing with your bat or your tennis racket. racket. We have AI. AI can build that for you. Well, so that’s That was my this complicated. However, I agree. I

52:01 this complicated. However, I agree. I don’t have to worry about crap. So, [laughter] Well,, I To your So, this Let’s go back to what that does. Let’s Let’s incorporate this, right? Yeah. We’ve said We’ve been saying this for many, many months on the podcast. We have this ultra knowledgeable AI thing, right? Why not make the change or actually have the,, “Hey, I want to change this part of my file and it’s going to be this way in the test environment. It’s going to be this way in production environment. Hey agent, I want you to go figure out how to write a GitHub action that

52:31 to write a GitHub action that automatically switches the stuff for me when I go from here to here, right? So, that makes more sense. You have the GitHub actions doing the right thing based on deployment environments of where it’s going. But, you’re right, Tommy. The agents should be smart enough to figure out. You describe what you need to change per environment and those should all work. And let me I I want to quickly emphasize though too the reason I do bring up the actions. For whatever reason, Mike, in the last 3 years, I’ve tried to learn actions and try to implement it myself like all manual. It just never registered for me.

53:02 manual. It just never registered for me. It was one of those Tommy’s not going to get this. like no matter what I looked at examples and all the stuff. It just just something about it doesn’t doesn’t make sense to me today like in terms of how it integrates with the repo. However, because I have GitHub agents now to an agent in a repo whenever something’s committed, Yep. I’m allowed to basically say, ” what? Whenever Whenever we’re on the master branch or the main branch, whichever your branch name is, can you write something First, I ask, “Can it do it?” Yep. Well, can’t can’t

53:33 “Can it do it?” Yep. Well, can’t can’t we just substitute the variable for anywhere where I have these semantic models where you find the database string?” Sure. All right, how do you do that? Well, I’ll create an action. Cool. And to me, I would not say what I’m saying now about using GitHub and GitHub actions in place of deployment pipelines a year ago. Yes. Because I wouldn’t use it because I didn’t know how Like, I I just couldn’t do it. Yes. have that ability now and that is a better feature for me than pipelines. I want to I know we’re about out of time here, Tommy, and I like this

54:03 of time here, Tommy, and I like this this conversation. I think it’s I hope this has helped. One, I hope we did a lot of a good enough job explaining the different patterns between things. I’m going to give some word language So, we talked earlier about like there’s a word salad. We’re just constantly saying words. People will have no clue what we’re talking about. I believe there are some concepts and words that you need to incorporate for this listener, incorporate into your vocabulary. Go research what they are and understand how they work in lieu of pipelines and get integration, okay? The

54:34 pipelines and get integration, okay? The words I’m going to say to you are commits. Understand what is a commit. Okay, so that’s something that’s important. Right after you learn what a commit is, you need to understand what is local versus remote branches. So, that’s another one that’s really important. So, when I’m making changes on my machine in my VS code, I’m committing them to my local branch. Local and remote is important because I can make changes all day long on just my machine, but none of those changes are

55:04 machine, but none of those changes are actually represented in GitHub or Azure DevOps. That’s when I’m talking to the remote branch and I’m doing a pull request to pull my changes into the remote code base. That’s what we’re doing. doing. So, commits, local versus remote, and then understand the concept of branches. So, everything we’ve been talking about right now is just about one branch of stuff. stuff. Well, take that one branch and now think about that branch happening for every single developer or one developer having

55:35 single developer or one developer having multiple branches. Earlier in the conversation, it was talking about, “Well, how do I change one file but not the other?” That’s a commit. A commit difference. Commit one file, not all of them. Right? How do I handle check-ins and and things? Now you’re talking about more concepts around branching and branching strategy. And where I think a lot of business users get tripped up is we think a lot about one branch, committing to one branch, but we lose the concept of many branches or many

56:05 the concept of many branches or many changes all happening. And to me, that’s where the really value-added portion of Git comes into this place. And then, after you’ve learned those three concepts, commits, branches, local, and remote, then move on to actions. Figure out how you can leverage actions with an agent and say, and say, “Pre-deployment or post-deployment, do this thing. Fix this connection string after you’ve deployed the code.” The GitHub actions or Azure DevOps

56:35 The GitHub actions or Azure DevOps actions, that’s the That’s the secret sauce to really heavily automate the movement of items and reconnection of items across different workspaces. Let me pause here, Tommy. Did I miss any words that I would say research? Is this hitting the right marks for you or am I missing something? I I think you’re you’re you’re spot on for me, Mike, on what you need to really master. And honestly, my closing thought here is a question for you. And I’m going to say, “What is the preferred way of the having a source control-like

57:07 of the having a source control-like process process in Fabric?” I’m going to quickly quickly, before you answer, just answer the question here on I would not recommend combining Git and deployment pipelines. That was the last question that Mail Bag asked. I think you’re just asking for complexity that’s unnecessary. Okay. But, overall, if you’re setting up an environment and they’re like, “We like deployment pipelines. We don’t know Git. Where are you going to nudge people to?” That’s going to be my question for you.

57:41 I’m going to go back to a concept that I think we’ve talked about before or in the future. I can’t even remember anymore. anymore. there’s this concept of like beginner mode, intermediate mode, and advanced mode. I think beginner mode is deployment pipelines with a single development workspace integrated with Git integration. Okay. Okay. I abso- I love Git and workspace synchronization because I get backups of everything I have. To me, that’s a very safe option.

58:11 safe option. I like it. It’s very helpful. It’s pretty easy. I can click a couple buttons and it just works. Happy with it. When you start leveling up, I think there’s intermediate level where is I take the dev environment and I link that to Git to Git and all my developers use the Git and Git integration. But, then I use deployment pipelines to move content between dev, test, and prod. Now, this only works on select items. It’s more like lake houses and

58:41 items. It’s more like lake houses and semantic models and Power BI reports. And pipelines now a little bit and now data flows Gen2. Like, so if you’re playing with those things, which the likelihood of you’re just making data with those five items, I’d recommend deployment pipelines. That makes it easy for you to go from dev to test to prod. But, I would say if you’re doing this, you need to severely limit who can deploy into dev or sorry, into test and production. So, when a developer is in your

59:12 So, when a developer is in your environment, they should only see the dev environment, period. A release manager or someone in charge of moving the work between the workspaces, that could be one individual from your dev team, that individual must never deploy anything from any anywhere, from local machine, from desktop, Power BI Desktop, never deploy into test or production. because it breaks all the automatic automatic automatic Yeah. Yeah. stuff. Right, it just breaks everything. So, if you can if you design the workspaces to be

59:42 if you design the workspaces to be hands-off for test and prod then you can use get integration on dev, happy. happy. Advanced mode of this is get on everything. Don’t even use deployment pipelines. You basically delete the deployment pipelines from the architecture and then you only use branching strategies or tagging or and GitHub actions becomes the entire system you use. And when you’re doing this for like, “Hey, I’m building something for customers and I’ve got 30 customers and we’re deploying reports across all of them.” When you start going into multiple

60:13 When you start going into multiple production environments, when you have many different workspaces that are dev, test, prod across different customers, you have to automate a lot more to become efficient. And in those scenarios, that’s when I’m going to really going to go all in on the development pipeline and the devops. Now, I’m going to copy at this with one other phrase. If your team is already used to building with get and get deployments you can go ahead and move faster to advanced mode. But if your team is coming from powerbi. com,

60:44 coming from powerbi. com, you’re going to want to start growing the team into one workspace, one get then deployment pipelines through the environment cuz these are two brand new concepts you have to get their heads around. Once they get comfortable with that, then you can then start introducing more complex deployment structures. Don’t do that day one. You will be overwhelmed, you will not understand, and you haven’t yet got the fundamentals of a commit, a branch, and local and remote. Right. Right. Those skills need to be solidified in

61:14 Those skills need to be solidified in the team first before you go on to the next steps. Right. I love it. I No, I I will I will veer off a little from you where advanced is the get only because like I said, I I think there’s a lot of complexity when you are doing pipelines Sure. don’t really talk as much to get. Like, they work, but it’s not like it is seamless integration where to me you’re asking for trouble. Yeah. but I see what you’re saying. If you’re already comfortable with that, right?

61:44 already comfortable with that, right? Yes. Yes. Because part of it feels like though, too. If I’m introducing both concepts, it’s like I’m teaching my son how to drive and I gave him a Ferrari. Yes. Like, “Oh, you got to learn to stick shift and go super fast and also learn what a red, learn when to turn on left.” Basically. So, there’s a lot of things you’re asking for mistakes to be made there. This is good stuff. Yeah. And honestly, the last thing is if you are wanting to test both, pilot this. this. Pilot this. Do this in a non-production environment. Do this in something that’s

62:15 environment. Do this in something that’s test. test. that’s given to me. I wouldn’t even assume you’d do this like in production stuff yet. Some people you’d be surprised. this. this. You say [laughter] that because you’ve experienced it. Yeah. All right. But this is good. Awesome. Well, thank you very much for listening today. Sorry for a couple of technical difficulties. Not sure what’s going on. Internets and things, I guess. but thank you very much for paying attention and hanging out for the episode. We really appreciate your listenership. Hopefully, this gave you a bit more of the the landscape, the picture of deployment pipelines and get integration. There’s a lot going on

62:45 integration. There’s a lot going on here. There’s a lot of really rich concepts. It is very powerful. But a lot of teams don’t yet know how to use the power yet. Beware the force. the force of get. That being said, thank you so much for listening. If you want to hear our episodes as they come out, if you like this content, we release all of our pre-recorded content, which this one is one of those, automatically on YouTube. It’s on YouTube. You can get it day one. As soon as we record it, it’s going to be on YouTube. So, if you become a member of our channel, members get

63:16 member of our channel, members get access to all early content, especially when we do recordings. So, if you want to be in the know before everyone else, you’re more than welcome to join. please become a member and then you can get our content earlier. Tommy, where else can you find the podcast? You can find us in Apple, Spotify, or wherever you get your podcast. Make sure to subscribe and leave a rating. It helps us out a ton. Do you have a question, idea, or topic that you want us to talk about in a future episode? Head over to powerbi. tips/podcast, leave your name and a great question. And finally, join us live every Tuesday

63:46 And finally, join us live every Tuesday and Thursday a. m. Central and join the conversation on all of powerbi. tips social media channels. Thank you all so much and we’ll see you next time. Express measures popping up [music] here high. Tommy and Mike lighting up the sky. Dance to the data laughs in the mix. Fabricating DAX, I get your fix. [music] Express measures, drop the beat now. Podcast kids, feel the crowd. [music]

Thank You

Want to catch us live? Join every Tuesday and Thursday at 7:30 AM Central on YouTube and LinkedIn.

Got a question? Head to powerbi.tips/empodcast and submit your topic ideas.

Listen on Spotify, Apple Podcasts, or wherever you get your podcasts.

Previous

Git Best Practices Diff Noise & Naming - Ep. 513

More Posts

May 8, 2026

Stop Using Bookmarks - Ep.526 - Power BI tips

In Episode 526 of Explicit Measures, Mike Carlo and Tommy Puglia unpack the latest Power BI and Microsoft Fabric topics from the show. You’ll get a quick read on the episode’s biggest ideas, why they matter, and where to dig deeper in the full conversation.

May 6, 2026

Less Guessing? More Building! - Ep.525 - Power BI tips

In Episode 525 of Explicit Measures, Mike Carlo and Tommy Puglia unpack the latest Power BI and Microsoft Fabric topics from the show. You’ll get a quick read on the episode’s biggest ideas, why they matter, and where to dig deeper in the full conversation.

May 1, 2026

Fabric's Most Underrated Features - Ep.524 - Power BI tips

In Episode 524 of Explicit Measures, Mike Carlo and Tommy Puglia unpack the latest Power BI and Microsoft Fabric topics from the show. You’ll get a quick read on the episode’s biggest ideas, why they matter, and where to dig deeper in the full conversation.