Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started

xifeng_L

通过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的增强型刷新类似。

 

以下是官方文档的原文:

 

xifeng_L_0-1726121512572.png

 

更多细节内容,可以自行浏览官方文档:在 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的租户设置中启用以下功能,如下图所示:

 

xifeng_L_1-1726121512579.png

 

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

 

xifeng_L_2-1726121606309.png

 

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

 

获取XMLA终结点

 

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

 

xifeng_L_3-1726121606319.png

 

创建SSIS包

 

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

 

xifeng_L_4-1726121641932.png

 

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

 

xifeng_L_5-1726121641935.png

 

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

 

xifeng_L_6-1726121666843.png

 

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

 

xifeng_L_7-1726121666846.png

 

xifeng_L_0-1726122355097.png

 

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

 

xifeng_L_1-1726122385042.png

 

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

 

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

 

xifeng_L_2-1726122385049.png

 

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

 

xifeng_L_3-1726122421477.png

 

 

将SSIS包部署到SQL Server

 

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

 

xifeng_L_4-1726122421484.png

 

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

 

xifeng_L_5-1726122447558.png

 

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

 

xifeng_L_6-1726122447560.png

 

4、点击部署

 

xifeng_L_7-1726122474679.png

 

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

 

xifeng_L_8-1726122474680.png

 

设置SQL Server代理任务

 

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

 

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

 

xifeng_L_9-1726122497787.png

 

2、新建SQL Server代理任务

 

xifeng_L_10-1726122497791.png

 

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

 

xifeng_L_11-1726122521577.png

 

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

 

xifeng_L_12-1726122521579.png

 

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

 

xifeng_L_13-1726122543634.png

 

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

 

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

 

xifeng_L_14-1726122543644.png

 

xifeng_L_15-1726122564997.png

 

 

总结

 

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

 

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