你有没有这样的烦恼:多次修改或者迭代数次的PowerBI报告,如果打算保留每个版本,都需要在每次修改前,复制一份并重新命名,到最后可能自己都不知道需要的哪一版?
星球嘉宾AgnesJ给大家带来的一个解决方案:利用git实现对PowerBI文件的版本控制。
本文技术性较强,如果你正好也有这个困扰请慢慢欣赏;如果暂时用不上,也可以先存着,知道有这么个技术,有需要了再翻回来看。
利用git实现对Power BI文件的版本控制
作者:AgnesJ
在开始介绍git的安装之前,我想先和大家聊一下“为什么我们要关心版本控制?” 对于任何开发人员,无论是小白还是资深,版本控制都是必不可少的。版本控制可以让我们跟踪源文件的更改。通过跟踪更改,开发人员可以快速识别何时发生了更改,发生了什么更改。使用git,开发人员可以“区分”旧文件与新文件的区别,了解到发生了什么更改。
同时,Git是一个分布式版本控制系统。这意味着它没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你在工作的时候,就不需要联网去读取文件啦,因为版本库就在你自己的电脑上。这也提高了它的安全性。
但是目前的问题是:Power BI Desktop创建的PBIX或PBIT是.zip二进制文件。
这意味着,使用版本控制的系统,我们无法“区别”不同的文件,也无法跟踪更改。比如当你将[价格]度量值更改为[价格-不含增值税]时,我们没有办法通过git看到这个更改。此外,由于我们无法“进行差异化”,那么如果有一个以上的开发人员来从事一个项目时,就没有办法合并你们所做的更改。这也就导致了限制了Power BI项目的开发人员数量。
然而,虽然有上述的这些限制,我们还是可以通过对文件进行“注释”的方法来实现对新旧文件的区分。
所以,在这里我想和大家(像我一样的GitHub新手)分享一下,如何一步一步创建GitHub仓库,并实现对.pbix文件的版本控制。
重要概念:(这里引用廖雪峰老师的话)
什么是版本库?
版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
什么是分支?
分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习dax的时候,另一个你正在另一个平行宇宙里努力学习git。
如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙合并了,结果,你既学会了dax又学会了git!
Git的分支是与众不同的,无论创建、切换和删除分支,Git在1秒钟之内就能完成。
了解完重要概念,那就开始吧。
首先,下载安装git
进入官网下载
https://git-scm.com/
![16535ee47bfd9c08f4e9361f42823f71.png](https://img.php1.cn/3cd4a/1eebe/cd5/086aec93f5e1e9b2.webp)
点击next直至安装完成。
![8ed6a0090f6993afc02d0a620d5c6b07.png](https://img.php1.cn/3cd4a/1eebe/cd5/d34245582687a4e6.webp)
![b6c5e0c93e25bd2b7ddfd24413f3eeea.png](https://img.php1.cn/3cd4a/1eebe/cd5/3e641eb5f5c8cd90.webp)
![7ff23cffca7472e1862021c0e9a7d045.png](https://img.php1.cn/3cd4a/1eebe/cd5/0d80e8a685a9a87b.png)
![4a2ad5348edae223b43aa91655f8fd44.png](https://img.php1.cn/3cd4a/1eebe/cd5/8343fdbffb0056b5.webp)
接下来,注册一个GitHub账户。
![68b29de555fb2aeced0b01994b5e53ca.png](https://img.php1.cn/3cd4a/1eebe/cd5/4283cd4bbba41b87.png)
注册好账户之后,登陆GitHub,点击创建一个新的仓库。
![dc4391343455bb61e9ff1be1db61d3ca.png](https://img.php1.cn/3cd4a/1eebe/cd5/433ea70d6ea577b1.jpeg)
注:可以创建一个私密的仓库,这样就可以保证数据的安全。
![db373827032be7658d31d109d06ba925.png](https://img.php1.cn/3cd4a/1eebe/cd5/b386c433a16f5497.webp)
至此,用来存储和管理我的.pbix文件的仓库创建成功。接下来,需要在本地创建一个仓库,并把本地仓库关联到远程仓库。
Git的仓库你可以建在你电脑的任何目录下(最好不要包含有中文目录)。在这里,我先新建一个文件夹 “GitTest”,然后打开这个文件夹,在空白处鼠标右击:Git bash here:
![31a26d7b8f3ca6d64b534334e86be3da.png](https://img.php1.cn/3cd4a/1eebe/cd5/a5d7215df572c386.webp)
连接远程仓库,有这几种做法:
![ca9fd3f2be1be3bd3387eb001a9ff028.png](https://img.php1.cn/3cd4a/1eebe/cd5/d942b7ec373849c3.webp)
下面我打算在 GitTest 下面创建本地库,使用第二种方法:
在git面板里输入命令行:
echo "# PowerBIFiles" >> README.mdgit initgit add README.mdgit commit -m "first commit"git remote add origin https://github.com/aision06/PowerBIFiles.gitgit push -u origin master
![6a42b70101927463861748ebe4ecb430.png](https://img.php1.cn/3cd4a/1eebe/cd5/a5d7215df572c386.webp)
这里提示,第一条 commit 已经添加并成功推送至远程仓库的当前分支 “master” 中。
之后,我们就可以往仓库里添加文件啦。
添加文件的时候,可以直接把你要管理的.pbix文件拖至本地仓库中。
![07c8f49e6f7a08a55550367f56c2a3c8.png](https://img.php1.cn/3cd4a/18ace/696/1d8e759bd3e6bbec.jpeg)
然后打开git bash,输入 git status 查看仓库的状态:这里提示我们新添加了一个名为 “FFT KPI.pbix”文件。
![d8930a5d5c1f51e8a09f54d389ae0c88.png](https://img.php1.cn/3cd4a/1eebe/cd5/e88efe5b0a13a7fa.webp)
接下来,我们把这个pbix文件推送到远程仓库中去,这个步骤使用三个命令行实现:
git add xxxxx ->文件名git commit -m “xxxxxxxxx” -> “xxxxxxx”为你添加的注释·git push
![7ab7350528bb6cb70e845ab6c82add2a.png](https://img.php1.cn/3cd4a/1eebe/cd5/bff2716168d1ed7b.webp)
打开你的远程仓库,就可以看到你成功推送的文件啦:
![105007361486c165034ccbebb6d5ae16.png](https://img.php1.cn/3cd4a/1eebe/cd5/ea91d84a82557da5.webp)
在这里,如果你遇到了文件无法推送的情况,例如,你在控制面板收到了这样的消息:
![062d5f1a1c64abc47bb72e9fadb9d9d0.png](https://img.php1.cn/3cd4a/1eebe/cd5/6789f68dabde0aed.png)
是因为想要推送的文件超过了最大文件大小的限制,这时,会提示你需要使用git
lfs插件来解决。
什么是Git LFS?
Git LFS(Large File Storage) 是 Github 开发的一个 Git 的扩展,用于实现 Git 对大文件的支持。简单的说,就是如果你想传超过100M的二进制文件到GitHub,你就要用Git LFS。
根据提示,进入 https://git-lfs.github.com/,下载安装扩展件,依据官方页面的指示进行操作:
![e1206c4c8bdbaf70c67160bf57e57161.png](https://img.php1.cn/3cd4a/1e618/c5a/d5d40da532c3a782.png)
注:如果对于同一个文件,你已经遇到了不能推送的情况,此时,需要撤回之前的commit。所以,如果你要上传的文件大于100M,那么建议你在对新文件进行操作之前就配置好git lfs。假设我对这个文件进行了修改,那么我只需要把这些修改 commit 并 push 到远程仓库。
在修改并保存了文件之后,先用git status查看一下状态:看到提示 FFT KPI.pbix被修改。
![5d4913884e6cb00d8f516e357d319227.png](https://img.php1.cn/3cd4a/1eebe/cd5/e62700fe09f8933e.webp)
使用git add 添加这个修改到仓库中,
![4cfbc2a47588e2787c16c9a64587cbc5.png](https://img.php1.cn/3cd4a/1e618/c5a/d5d40da532c3a782.png)
commit,并添加一段注释用来标明:
![2867e28718242dd63c75cef4a5935dbe.png](https://img.php1.cn/3cd4a/1eebe/cd5/1113165c4904ecc5.webp)
push到远程仓库里:
![2224c4e5c1659154cae893bd58bef69e.png](https://img.php1.cn/3cd4a/1eebe/cd5/a5d7215df572c386.webp)
在远程仓库里查看新的版本,以及注释:
![4d739458e968fa0dc24d48eaf79e5a8b.png](https://img.php1.cn/3cd4a/1eebe/cd5/443b30bb45e66690.webp)
点击文件名,还可以继续添加描述,我又在此处添加了 ”Data updated. 15/12/2019”。
![c05a5b9ffdb8fbe3b6245f6d73f6d91f.png](https://img.php1.cn/3cd4a/1eebe/cd5/780a3060eeed6a4e.webp)
点击查看你所有的commit,你就可以轻松找回自己的注释:
![cbe7ae10479e99dd81e781f73d8e3dfc.png](https://img.php1.cn/3cd4a/1eebe/cd5/433ea70d6ea577b1.jpeg)
其实,实现版本控制的方法就是,通过阅读每一个 commit 的注释,查询对文件进行的更改,之后,再使用git checkout,就可以找回想要的那一个版本啦。
使用git找回自己想要的文件,以及其他工具推荐首先,需要获得你想要的那一条commit sha,(sha就类似于id,每一条commit都有自己独特的sha)比如我现在想要看到我的“第一版”文件:
打开git bash后 输入 git log,
![0bb6cf2da37b33922fb076fe2d1df25c.png](https://img.php1.cn/3cd4a/1eebe/cd5/d942b7ec373849c3.webp)
复制sha:8cf7494dfe37c18dc0495afda3c72ea619a6eda9
或者直接在github页面上复制:
![4c6fc4801ce7a7c37581764553becae7.png](https://img.php1.cn/3cd4a/1eebe/cd5/617c1173853af4b6.webp)
此时,假设你有两种想法:
第一种,你想要保留你其余的commit,只是想单独取出这一条commit中的文件,就需要:
git fetch origin xxxxxxxshaxxxxxxx
![ad7b516b452bbd33772a62cc2d3fad2e.png](https://img.php1.cn/3cd4a/1e618/cd5/af17da15769ccb2e.jpeg)
git checkout FETCH_HEAD
![c16cef29f343199bcafb3244b52ab07c.png](https://img.php1.cn/3cd4a/1eebe/cd5/617c1173853af4b6.webp)
执行完上述命令,再打开你的本地仓库,你会发现,你回到了这一条commit时的所存储的文件状态。
这时,你可以使用下面的命令创建一个新的分支,用来存储你想要的文件版本:
git checkout -b “develope”按照提示,将你取出的这一条commit推送到新的分支里,这样你就可以单独获得你想要的文件了。
![254fe6e446a5b616f5c7e48c1bb82368.png](https://img.php1.cn/3cd4a/1eebe/cd5/6789f68dabde0aed.png)
而且,你推送到仓库里所有的文件都不会丢失,你只需要切换分支就可以找到其他文件。
注:如何切换分支?使用 git checkout xxxxx (xxxxx为分支的名字)
第二种,如果你不再需要这条commit之后的提交或修改,则可使用reset强制回到这条提交。
git reset --hard commit_sha
我在这里只是简单地描述了一下我是如何利用git对pbix文件实现版本控制的,只是git强大功能的凤毛麟角。
同时,如果你觉得git对你来说过于复杂或者不顺手,还有其他的方式来做版本控制:
第一种,使用One drive business。
在One drive for Business中,服务器会把同名文件在不同时间的上传自动识别为不同的版本。
可以在文件详情中查看不同的历史版本,并恢复(restore)某一个历史版本。
![cdb59124eb4dd29b7cfc5dd6de8624e6.png](https://img.php1.cn/3cd4a/1eebe/cd5/02c379d60086f382.webp)
如果你有一个office 365账号,并且可以使用One drive for business,固然好啦,简单好用,不需要额外安装其他工具。这也是微软官方建议的一种方式。
但缺点是,付费。
另外还有一个工具,做开发的朋友可能会熟悉:AzureDevOps, 以前的Team Foundation Server。
TFS通常被用来持续整合一个开发项目,所以它也整合了git的功能。可以使用git或通过Visual studio来联结使用。和OneDrive for Business不同,TFS可以注册账号,免费试用。感兴趣的朋友可以自己深入了解一下。在这里就不多说啦。
如果你也和我一样,看到那么多的version就头疼,那就赶快实践一下版本控制吧。
老实说,上面的内容我看了一遍头都是晕晕的,但是,这确实为解决PowerBI版本控制的问题,提供了一个很好的思路,感谢AgnesJ的长篇分享,大家如果在实践过程中有什么问题,可以在知识星球中向她提问。
-精彩推荐-
![cdb74da55bd116a2d6c4341db45a524c.png](https://img.php1.cn/3cd4a/1eebe/cd5/7cccb7e4b6cb5cb8.webp)
![0d46a94188c2b5df8e355efbb1d58cf0.png](https://img.php1.cn/3cd4a/1eebe/cd5/bff2716168d1ed7b.webp)
![710796316b4b6115322ff32596907270.png](https://img.php1.cn/3cd4a/1eebe/cd5/d84f9786330d9e41.png)
![fbd89dd927a2d6ed24218be3645c82d0.png](https://img.php1.cn/3cd4a/1eebe/cd5/eec57030b649a106.webp)
如果你刚开始接触Power BI,可在微信公众号后台回复"PowerBI",获取《七天入门PowerBI》电子书,轻松上手。
成为PowerBI星球会员,
问题随时答疑,更多资源分享
![ce87a15f9f69609ff750d566de616bef.png](https://img.php1.cn/3cd4a/1eebe/cd5/45a090220e38e09d.webp)
添加微信:PowerBI001,进入学习交流群