回忆是一座桥
却是通往寂寞的牢

通过XMLA终结点刷新PowerBI报表

前言

在PowerBI的高级容量工作区中(Premium),可以通过XMLA终结点来连接到工作区中的各个数据集,可以触发数据集刷新,查询或更改数据集的模型数据、元数据、事件和架构等等,可以配合许多第三方客户端应用程序或工具来使用,如:DAX Studio、Tabular Editor、ALM Toolkit、SSMS、SSAS、Power Shell、Excel等。

PowerBI的高级容量工作区相当于一个SSAS实例,工作区中的数据集就是SSAS实例中的数据库,而XMLA终结点就相当于这个SSAS实例的服务器地址。

围绕XMLA终结点的应用有很多,本篇文章主要介绍在SSIS与SQL Server代理任务中通过XMLA终结点自动刷新数据集的方法。通过XMLA终结点来进行刷新,可以实现各种精细化刷新,如只刷新数据集中的部分表或部分分区等等,而且没有刷新次数与刷新超时的限制,这与REST API的增强型刷新类似。

以下是官方文档的原文:

更多细节内容,可以自行浏览官方文档:在 Power BI 中使用 XMLA 终结点连接和管理语义模型

前期准备

首先,需要安装以下软件或工具:

  • Visual Studio

  • SQL Server 2022

  • SQL Server Analysis Server (SSAS)

  • SQL Server Integration Services (SSIS)

  • SQL Server Management Studio (SSMS)

其中,SQL Server必须要安装2022及以上版本,否则在SQL Server代理作业中执行SSIS包时将报错。

另外,需要在PowerBI Server的租户设置中启用以下功能,如下图所示:

最后,再把容量设置中的XMLA终结点设置为读写,如下图所示:

另外需要注意的是,通过XMLA终结点执行的操作遵守在工作区或应用级别设置的安全组成员身份,因此想要刷新数据集,还需要具有工作区参与者或以上角色的权限。

获取XMLA终结点

只有Premium、Premium Per User等高级容量工作区中才有XMLA终结点,其获取位置如下图所示:

创建SSIS包

1、打开Visual Studio,创建一个SSIS项目

2、在解决方案资源管理器中,右键设置项目属性,将部署目标版本设置为SQL Server 2022

3、添加一个Analysis Services处理任务

4、双击该处理任务按钮,进入如下编辑界面,创建连接管理器,以连接到PowerBI云端数据集

5、添加需要处理的对象,即需要刷新的内容,并设置处理选项

不同的处理选项有不同的效果,具体可以参考该官方文档:Refresh命令(TMSL)

6、鼠标右键选择执行任务,或点击上面选项卡下的启动按钮,检查任务是否可以执行成功

7、任务执行成功后,即可将部署到SQL Server,至此,SSIS包创建完成

将SSIS包部署到SQL Server

1、在解决方案资源管理器中,右键选择对应的包,然后选择部署包

2、选择部署目标,这里部署到本地SQL Server的SSIS目录中

3、连接到本地SQL Server,并浏览与选择要部署到的SSIS目录的路径

4、点击部署

5、部署完成,可以关闭相关应用

设置SQL Server代理任务

最后再通过SQL Server代理任务来自动执行SSIS包,以实现数据集的自动刷新,具体步骤如下:

1、打开SSMS,连接到SQL Server数据库

2、新建SQL Server代理任务

3、在常规页面里,设置代理任务的名称

4、在步骤页面里,新建一个执行SSIS包的步骤,如下图所示:

5、在计划页面里,新建一个作业计划,即设置按什么频率来自动执行该SQL Server代理任务

6、至此,完成代理任务的创建,其它页面的选项可根据需要自行设置

7、最后,可以查询本地SQL Server代理任务的执行历史记录,以及云端数据集的刷新记录,两者的对比如下图所示

总结

本篇文章所介绍的XMLA终结点刷新方案,主要借助了SSIS对SSAS的处理能力,再配合SQL Server代理任务来实现自动定时刷新,本质上还是之前SQL Server三件套的玩法。

通过XMLA终结点,可以把云端数据集当作SSAS数据库来处理,实现了云上与云下两套体系的衔接,为探索更多有趣的应用场景提供了广阔的可能性。

未经允许不得转载:夕枫 » 通过XMLA终结点刷新PowerBI报表
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论