原始数据是文件,如何自动刷新PowerBI报表?

工作中,基于同事提供的基础数据在PowerBI中搭建好数据模型之后如何更方便地刷新,是一个很重要的问题。

最简单的方式是原始数据来自于联网的数据库,这样刷新不需要手动操作。

但是如果数据不是来自于数据库,而是来自于Excel,就很头疼。

实际工作中,我找到了两种不基于联网数据库的PowerBI报表刷新方式,分别列举如下。

两种方法用的建模工具是PowerBI Destkop,因为要用它将模型发送到PowerBI网络服务。
当然用Excel作为建模工具也是可以的,这样就不需要PowerBI网络服务,只是Excel模型只能在本地计算机上刷新,如果要把生成的报表共享给其他同事要做一番额外的工作——比如,把模型放入OneDrive For Business然后共享给同事。

一、基于OneDrive For Business的PowerBI报表自动刷新方法

第一步,得有一个OneDrive For Business账号,我是公司购买了一个office365,就自带1T的OneDrive For Business了。

第二步,得准备一个OneDrive For Business文件夹,用于存放原始数据。

第三步,基于OneDrive For Business建立PowerBI数据模型。这一步很简单,直接建立一个类似于下面这样的数据源即可:

SharePoint.Contents("https://xxx-my.sharepoint.cn/xxx/", [ApiVersion = "Auto"])

到哪里去获取引号中的链接地址呢?在PowerBI网页版中点击左上角的九个点,选择OneDrive图标,然后鼠标左键单击,就会进入OneDrive For Business页面了。


image.png
image.png

在地址栏可以发现类似于下面这样的链接地址:

https://xxx-my.sharepoint.cn/xxx/_layouts/15/onedrive.aspx

把后面的【_layouts/15/onedrive.aspx】去掉,就可以在PowerBI中进入OneDrive For Business的根目录了(当然,也可以进入特定文件夹而不用进入根目录,具体参见这个英文链接)。
第一次打开OneDrive For Business链接会要求填写凭据,填写PowerBI账号密码即可。
之后就跟操作本地文件夹和文件一模一样了。

第四步,把数据源文件夹以链接的方式分享给同事,让其编辑或替换里边的原始数据即可。
这一步比较繁琐,并不是直接生成分享链接发给同事,他们就可以操作的:通过这样的方式分享出去的链接,必须要有该OneDrive For Business的有效账号才能打开,而不是匿名方式打开。

而我需要的恰恰是匿名就能打开链接(这种方式对保密性要求很高的数据并不适合,任何拥有该链接的人都可以看到并修改其中的数据;如果对安全性要求很高,建议给相关人员购买账号)。所以参考了这篇教程,打开了OneDrive For Business的匿名分享。

匿名分享成功后,把链接发给同事,他们打开链接就可以在浏览器里边编辑原始数据(无需安装任何程序),当然,也可以把文件下载到本地后编辑再上传上去。


image.png
image.png

需要注意的是,已有文件只能覆盖不能删除。

第五步,非常重要!不能通过PowerBI Desktop直接发布到PowerBI网络服务,因为这样发布上去后PowerBI计划刷新虽然成功,然而数据并不会更新。​

别问我怎么知道的,因为我是今天才知道的。

在PowerBI Desktop中建立好数据模型后,保存,再把模型文件(也就是pbix文件)放到OneDrive For Business中。

第六步,在PowerBI网络版中,点击左下角的【获取数据】,然后选择【文件】,再选择【OneDrive For Business】,然后找到对应的pbix文件进行连接。连接后之前做的图表也会自动加载,不需要重新在网页中再做一遍。

图片2.png

第七步,在PowerBI网络服务中设置刷新。

image.png

可见网关连接不需要了,但是要在数据源凭据里进行设置,之后就可以设置计划刷新了。

这种方式的好处是无需本地计算机随时开机,只要把链接发给同事让他们更新其中的文件就好了。
坏处是如果采用匿名链接,对安全性要求高的数据就很危险了,这时需要额外花钱去给需要更新数据的同事购买能打开OneDrive For Business链接的账号,这一般都是office365账号且隶属于同一个组织。

二、基于本地网关的全自动刷新方式

这是我最先采用的方法。
这种刷新方式要求在本地计算机上安装数据网关配置好之后,只要本地电脑开机,那么数据网关就和PowerBI服务器建立了持久的连接,能自动刷新本地计算机上的数据。

那么,同事的数据如何到达我自己的电脑呢?有很多种方式,适用场景最广的是通过发送电子邮件(这样不受局域网限制),然后用某种方式把电子邮件自动保存到指定文件夹,再把这个指定文件夹添加到数据网关的数据源。

我平时用outlook比较多,所以找了一段VBA代码(代码见附件)来自动监测指定主题的邮件,如果有附件则自动保存到指定文件夹。

把这段VBA代码添加到outlook之后,再创建一条规则:当新邮件来自于指定主题且包含附件,则将其保存到指定的文件夹:


image.png

如果宏无法运行,则需启用宏:


image.png
image.png

如果在规则中找不到运行脚本的命令,则需:


image.png

这种方式的好处是基本做到了全自动化:同事只需要根据指定规则发邮件到指定邮箱即可。
但这种方式也有很大弊端:必须保持数据网关所在的电脑随时开机,否则万一在非工作时间也需要刷新数据就很麻烦了。而在周末和节假日期间,这类非服务器的电脑一直开机也有安全隐患——且不说浪费电的问题。

附件:自动保存附件的VBA代码

Option Explicit

Public Sub SaveAttach(Item As Outlook.MailItem)

    SaveAttachment Item, "S:\Holding\", "*.xls"

    MsgBox "附件已保存"

End Sub

' 保存附件

' path为保存路径,condition为附件名匹配条件

Private Sub SaveAttachment(ByVal Item As Object, path$, Optional condition$ = "*")

    Dim olAtt As Attachment

    Dim i As Integer

    If Item.Attachments.Count > 0 Then

        For i = 1 To Item.Attachments.Count

            Set olAtt = Item.Attachments(i)

            ' save the attachment

            If olAtt.FileName Like condition Then

                olAtt.SaveAsFile path & olAtt.FileName

            End If

        Next

    End If

    Set olAtt = Nothing

End Sub

语雀链接:https://www.yuque.com/wanght/powerbi/refresh_data

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335