前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Power BI云端报告导出数据的几种方法探讨

Power BI云端报告导出数据的几种方法探讨

作者头像
陈学谦
发布2022-04-11 14:16:19
5.1K3
发布2022-04-11 14:16:19
举报
文章被收录于专栏:学谦数据运营学谦数据运营

发布到云端的报告,如果制作精良、图文并茂、细节详实,其实并没有导出的必要。

然而,在微信里将Excel甩来甩去依然是相当一部分企业内平时工作交流沟通的“良好”习惯。

因此,很多时候,我们仍然需要做一些数据分析建模过程中的返祖行为:导出数据表。

数据导出有多种办法,我们展开讨论。

01

可视化对象内置导出

对于发布到云端的报告来说,导出数据表是一件比较容易的事:

可以选择导出具有当前布局的数据,默认Excel格式,最多15万行:

也可以导出汇总数据,可以选择xlsx格式或csv格式:

同时,基础数据也可以通过设置直接进行下载:

以上数据的下载权限可以由管理员在报表设置中进行选择:

经过多个步骤并且还有选项的过程,会让最终用户感到困惑,并在选择下载哪类数据时徘徊不定,求助与指导毕竟也要花费不少时间。再就是今天教了明天又忘,时有发生。

最主要的问题是,对于大部分报表可视化来说,本不应该提供给用户导出数据的功能,仅仅是某几个表可能需要而已,而报表本身无法仅为特定的表或者视觉对象提供数据导出功能。

还有一个问题是,可视化对象无论是图或者是表,往往含有大量的信息,尤其是Power BI 上制作的中国式报表,往往包含十几列甚至几十列数据,而用户真正想要下载的可能只是某一列或者几列。他们往往在导出数据之后,再删除冗余的列:

02

Power Automate提供下载

基于以上的分析,可视化对象内置的数据导出功能并不完美。

同时,我们对完美提出了如下要求:

  • 报告整体不提供数据下载功能,仅对个别可视化对象的某些字段提供;
  • 无需经过繁琐的步骤选择操作,通过点击一个按钮即可实现;

本节标题已经给出了答案。

Power Automate

过程比较简单:

一、在desktop中添加PA可视化对象:

拖入想要下载的字段,这个千万别忘了:

可视化对象右上角三个点,选择编辑:

耐心等待几分钟……

二、创建流

在显示的页面中左上角点击新建,即时云端流:

添加下一步:

创建CSV文件,数据源选择最后一个Power BI表。注意,如果之前没有选择添加字段,那么此处不会显示这一项。

保存到onedrive for business中,并取一个能够区分的文件名:

保存并应用即可:

三、可视化调整

适当调整一下可视化对象的外观即可:

四、效果:

运行了4次,看一下结果:

很好!运行非常高效,基本上都在3秒内结束工作:

不过此时,疑问来了,如果是提供给最终用户下载使用,那么不同的用户在点击该按钮时,都会生成文件并保存在这个onedrive中,他们也收不到啊。

没错。

所以,我们还需将flow再修改一下:

这样,只要用户点击按钮,他的邮箱中就会收到一封带着附件的邮件:

完事。

问题讨论与结论

对于需要手动导出数据的报表,本文简单介绍了以上两种办法。

总体来说,内置的导出比较生硬,一方面最终用户操作繁琐,另一方面可能由于数据保密性而不允许导出,从而无法使用。而Power Automate几乎完美地解决了以上两点,但是需要报表的管理员具有PA背景与能力,而且如果报表中需要多处设置导出,也需要花费一些时间进行添加。

不过Power Automate导出数据也并非没有缺点,比如导出的CSV格式用Excel打开是乱码的:

当然,这个也不是没有办法解决,我们可以通过发送txt格式的文件或者写一个更加复杂的flow将csv格式按行写入Excel中,再通过附件发出来。

另外,Power Automate只能获取前1000行的数据,也就是说,如果数据超过了1000行,则只能截取前1000行返回:

那么,这种办法还是存在着巨大的隐患。

另一个可能出现的隐患是:导出的数据未必是当前最新的数据,仔细观察下图:

原因之前讨论过,就是由于背后的数据集已经刷新,但是台前可视化对象此时并没有得到刷新:

而无论是内置的导出数据还是通过Power Automate导出都是获取的可视化对象中显示的台前的数据,因此导出的数据只能和数据未更新之前的可视化对象保持一致。

当然,大部分时候这并不是什么大问题。如果能保持一个良好的习惯,在导出数据前先刷新报表页面,也就无碍了。

因此,两种方法都不尽如人意。大家可以择优选择,并根据上思路使用Power Automate创建出更多玩法。

03

自动化解决方案预告

有这么一个案例:

团队正在使用一个项目开发进度的软件(如Trello或Teambition ),记录着每一个子公司每一个项目的开展进度,每天软件自动或者项目管理人员手动更新进度,比如昨天是32%,今天是35%。

Power BI可以通过API获取这些数据,但是这些数据永远是最新的,而之前的进度就没有了。

那么如何获取每天的进度趋势,以为将来的分析需要呢?

这是一个非常现实的问题。

而且此类案例还不少,比如通过powerquery获取每日的疫情数据,但是每次更新时,之前的历史数据就不存在了。有一种办法是用powerquery实现数据库回写,历史文章参考:

【重磅来袭】在Power BI 中使用Python(4)——PQ数据导出&写回SQL

Power BI数据回写SQL Server(1)没有中间商赚差价

Power BI数据回写SQL Server(2)——存储过程一步到位

PowerBI借”第三方“将度量值回写SQL与天猫总裁的两个88年女人

但是,并不是每一个数据库都允许你回写的,比如此类软件你怎么回写?

所以还是得想别的办法。

办法倒是也挺多,比如每天定个闹钟手动下载……,比如:

通过ssms连高级工作区数据集,写dax或者mdx将数据自动回写sqlserver数据库,然后将过程用sql server代理建定时任务 那就最简单点,直接excel连数据集,获取数据后存在excel,用windows计划任务加简单vba就行了 李永峰老师

最佳方案一定得包含一条:无需开机。

因此,排除以上的方法。

在2021年8月,powerbi 博客更新了一个新的功能:使用API进行DAX查询

https://powerbi.microsoft.com/en-us/blog/announcing-the-public-preview-of-power-bi-rest-api-support-for-dax-queries/

通过API链接将查询语句POST到数据集中,直接返回查询结果。

这正是我们想要的。

对于结果,写入数据库,存入SharePoint List或是直接导出Excel表,那就看需要了。

而且,出于无需开机考虑,我们想到了使用Power Automate:

本文到这已经3k字,限于篇幅,我们下一篇详细展开。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-03-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PowerBI生命管理大师学谦 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档