你有没有这样的烦恼:多次修改或者迭代数次的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/
点击next直至安装完成。
接下来,注册一个GitHub账户。
注册好账户之后,登陆GitHub,点击创建一个新的仓库。
注:可以创建一个私密的仓库,这样就可以保证数据的安全。
至此,用来存储和管理我的.pbix文件的仓库创建成功。接下来,需要在本地创建一个仓库,并把本地仓库关联到远程仓库。
Git的仓库你可以建在你电脑的任何目录下(最好不要包含有中文目录)。在这里,我先新建一个文件夹 “GitTest”,然后打开这个文件夹,在空白处鼠标右击:Git bash here:
连接远程仓库,有这几种做法:
下面我打算在 GitTest 下面创建本地库,使用第二种方法:
在git面板里输入命令行:
echo "# PowerBIFiles" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/aision06/PowerBIFiles.git
git push -u origin master
这里提示,第一条 commit 已经添加并成功推送至远程仓库的当前分支 “master” 中。
之后,我们就可以往仓库里添加文件啦。
添加文件的时候,可以直接把你要管理的.pbix文件拖至本地仓库中。
然后打开git bash,输入 git status 查看仓库的状态:这里提示我们新添加了一个名为 “FFT KPI.pbix”文件。
接下来,我们把这个pbix文件推送到远程仓库中去,这个步骤使用三个命令行实现:
git add xxxxx ->文件名
git commit -m “xxxxxxxxx” -> “xxxxxxx”为你添加的注释·
git push
打开你的远程仓库,就可以看到你成功推送的文件啦:
在这里,如果你遇到了文件无法推送的情况,例如,你在控制面板收到了这样的消息:
是因为想要推送的文件超过了最大文件大小的限制,这时,会提示你需要使用git
lfs插件来解决。
什么是Git LFS?
Git LFS(Large File Storage) 是 Github 开发的一个 Git 的扩展,用于实现 Git 对大文件的支持。简单的说,就是如果你想传超过100M的二进制文件到GitHub,你就要用Git LFS。
根据提示,进入 https://git-lfs.github.com/,下载安装扩展件,依据官方页面的指示进行操作:
注:如果对于同一个文件,你已经遇到了不能推送的情况,此时,需要撤回之前的commit。所以,如果你要上传的文件大于100M,那么建议你在对新文件进行操作之前就配置好git lfs。
假设我对这个文件进行了修改,那么我只需要把这些修改 commit 并 push 到远程仓库。
在修改并保存了文件之后,先用git status查看一下状态:看到提示 FFT KPI.pbix被修改。
使用git add 添加这个修改到仓库中,
commit,并添加一段注释用来标明:
push到远程仓库里:
在远程仓库里查看新的版本,以及注释:
点击文件名,还可以继续添加描述,我又在此处添加了 ”Data updated. 15/12/2019”。
点击查看你所有的commit,你就可以轻松找回自己的注释:
其实,实现版本控制的方法就是,通过阅读每一个 commit 的注释,查询对文件进行的更改,之后,再使用git checkout,就可以找回想要的那一个版本啦。
使用git找回自己想要的文件,以及其他工具推荐
首先,需要获得你想要的那一条commit sha,(sha就类似于id,每一条commit都有自己独特的sha)比如我现在想要看到我的“第一版”文件:
打开git bash后 输入 git log,
复制sha:8cf7494dfe37c18dc0495afda3c72ea619a6eda9
或者直接在github页面上复制:
此时,假设你有两种想法:
第一种,你想要保留你其余的commit,只是想单独取出这一条commit中的文件,就需要:
git fetch origin xxxxxxxshaxxxxxxx
git checkout FETCH_HEAD
执行完上述命令,再打开你的本地仓库,你会发现,你回到了这一条commit时的所存储的文件状态。
这时,你可以使用下面的命令创建一个新的分支,用来存储你想要的文件版本:
git checkout -b “develope”按照提示,将你取出的这一条commit推送到新的分支里,这样你就可以单独获得你想要的文件了。
而且,你推送到仓库里所有的文件都不会丢失,你只需要切换分支就可以找到其他文件。
注:如何切换分支?使用 git checkout xxxxx (xxxxx为分支的名字)
第二种,如果你不再需要这条commit之后的提交或修改,则可使用reset强制回到这条提交。
git reset --hard commit_sha
我在这里只是简单地描述了一下我是如何利用git对pbix文件实现版本控制的,只是git强大功能的凤毛麟角。
同时,如果你觉得git对你来说过于复杂或者不顺手,还有其他的方式来做版本控制:
第一种,使用One drive business。
在One drive for Business中,服务器会把同名文件在不同时间的上传自动识别为不同的版本。
可以在文件详情中查看不同的历史版本,并恢复(restore)某一个历史版本。
如果你有一个office 365账号,并且可以使用One drive for business,固然好啦,简单好用,不需要额外安装其他工具。这也是微软官方建议的一种方式。
但缺点是,付费。
另外还有一个工具,做开发的朋友可能会熟悉:AzureDevOps, 以前的Team Foundation Server。
TFS通常被用来持续整合一个开发项目,所以它也整合了git的功能。可以使用git或通过Visual studio来联结使用。和OneDrive for Business不同,TFS可以注册账号,免费试用。感兴趣的朋友可以自己深入了解一下。在这里就不多说啦。
如果你也和我一样,看到那么多的version就头疼,那就赶快实践一下版本控制吧。
老实说,上面的内容我看了一遍头都是晕晕的,但是,这确实为解决PowerBI版本控制的问题,提供了一个很好的思路,感谢AgnesJ的长篇分享,大家如果在实践过程中有什么问题,可以在知识星球中向她提问。
如果你刚开始接触Power BI,可在微信公众号后台回复"PowerBI",获取《七天入门PowerBI》电子书,轻松上手。
网友评论