前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PowerBI API异步刷新教程

PowerBI API异步刷新教程

作者头像
陈学谦
发布2022-02-17 10:22:56
3.4K0
发布2022-02-17 10:22:56
举报
文章被收录于专栏:学谦数据运营学谦数据运营

去年12月份,微软发布了Power BI的异步刷新预览版:

Asynchronous refresh now available in Power BI for public preview We are excited to unlock additional asynchronous refresh capabilities for Power BI Premium, Power BI Premium per User, and Power BI Embedded! https://powerbi.microsoft.com/en-us/blog/asynchronous-refresh-now-available-in-power-bi-for-public-preview/

引言

通常我们在Power BI中实现数据刷新,有这么几种途径:

在Power BI desktop中点击刷新按钮:

在Power BI service中点击数据集的立即刷新:

或者通过设置定时刷新的方式来实现刷新:

但是以上所有的刷新方式都是对整个数据集的刷新,即所有模型中的表全都要刷新一次!

如果模型比较复杂、数据量比较大的情况下,速度会比较慢。

并且,在较多场景下,模型中真正数据变化的表往往只有一两个,根本没有必要进行全模型刷新。

因此,出现了“异步刷新”的概念。

PowerBI desktop异步刷新

所谓“异步刷新”指的是PowerBI模型中,仅对个别或者局部的表进行刷新,其他表不进行刷新的操作。

在Power BI desktop中,要实现异步刷新,只需要一个很简单的操作,点击表右侧的三个点,选择刷新数据即可刷新单个表:

或者在模型视图,通过Ctrl或shift键选中多个表,再点击三个点,实现多个表的局部刷新:

PowerBI service异步刷新

那么在Power BI service中如何实现异步刷新呢?

这是我们今天要讨论的重点!

首先,官方说明在这:

Asynchronous refresh with the Power BI REST API (Preview) By using any programming language that supports REST calls, you can perform asynchronous data-refresh operations on your Power BI datasets. https://docs.microsoft.com/en-us/power-bi/connect-data/asynchronous-refresh

实现的方法也很简单,官方给出了基本链接模式:

代码语言:javascript
复制
https://api.powerbi.com/v1.0/myorg/groups/{groupId}/datasets/{datasetId}/refreshes

从链接中我们可以得到异步刷新的整个逻辑链条:

而这个api连接方式其实就是在Refresh Dataset In Group的基础上进行了一些body的添加:

Datasets - Refresh Dataset In Group Triggers a refresh for the specified dataset from the specified workspace. An asynchronous refresh would be triggered only if any request payload except notifyOption is set. https://docs.microsoft.com/zh-cn/rest/api/power-bi/datasets/refresh-dataset-in-group

因此,我们只需要在这个网页中点击“试用”,即可开始异步刷新的操作步骤:

首先点击登录azure账户:

显示这个界面:

我们需要在红框的位置输入datasetid和groupid。

这两个id的获取方式为,点击你想要刷新的数据集(注意不是报告):

在新的页面的地址栏中会显示:

https://app.powerbi.com/groups/07f60xxx-xxxxx-xxxx-xxxx-xxxxxxxxb039/datasets/1016xxxx-xxxx-xxxx-xxxx-xxxxxxxx6365/details

在groups后显示的就是groupid,在datasets后显示的就是datasetid,将这两个id填入相应的位置:

还有一个重要的内容,就是想要单独刷新哪个表。我们需要在请求body里填写。

默认的数据是这样的:

如果我们想要单独刷新表“1”,我们需要修改为:

代码语言:javascript
复制
{
    "type": "Full",
    "commitMode": "transactional",
    "maxParallelism": 2,
    "retryCount": 2,
    "objects": [
        {
            "table": "1"
        }
    ]
}

一切就绪,下一步,点击RUN:

如果返回202则说明运行成功!

正如视频中所展示的那样,原本的两个表是这样:

修改原始表格内容为:

异步刷新单独一个“1”表,powerbi中展示的是:

发现第一张表的数据进行了更新,第二张表仍然没有变化。

目的实现!

我们去刷新结果里看看:

我分别对这个数据集进行了手动、API全部刷新和API异步刷新,三次刷新的结果显示是不同的:

手动刷新会显示“按需”,走API的会显示“via api”,但是第三次的异步刷新,左边带有一个“显示”,点开其内容为:

异步刷新时会设置一个id,这个id可以用来对刷新进行停止(比如某个表的刷新过程出现了异常导致较长时间没有刷新完成,或者在刷新过程中又进行了数据更新,想重新开始刷新。该问题意义特别重大,后续单独发文具体讲解)。

我们先观察一下不同刷新方式消耗的时间:

手动刷新基本上在10秒钟以上,走api的全模型刷新也差不多,但是异步刷新只需要5秒。

对于小模型而言,5秒钟和10秒钟的差距并不大。但是对于一些较大模型来说,刷新整个报告,无论是手动还是api还是计划刷新,往往都需要几分钟甚至几十分钟,但是异步刷新其中的一个或几个表仅仅需要几秒钟时间:

可以极大地提高刷新效率!

总结

本文介绍了powerbi最新的预览功能:异步刷新(Asynchronous Refresh)。

该刷新方法对于较大模型、多表、只有部分表高频率更新而其他表很少发生数据更改的模型,可以极大地减少刷新等待时间,极大地提升刷新效率,对Power BI创作者和使用者的生命管理做出了巨大的贡献,因此,是一个极好的功能。

不过,要尝试异步刷新,必须得使用premium账号或者premium per user权限,或者powerbi embedded。所以暂时对于普通用户或者pro账户来说,是无法体验的,除非能进行申请premium per user的60天试用:

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档