本文是【Power BI X SSAS】系列的第五篇。
第一篇比较了Power BI数据导入的三种方式,指出了Power BI结合SSAS的意义。
第二篇阐述了Power BI和SSAS结合的基本原理。
第三篇介绍了SSAS表格模型建模的基本流程。
第四篇介绍了SSAS表格模型数据刷新的方法。
而这一篇,我们将解决大家都比较关心的一个问题:
当我已经在Power BI上搭建了数据模型,度量值也写了几十上百个了,这一切如果要重新在SSAS上做一遍多麻烦?能否将Power BI的数据模型和度量值一并导入到SSAS?
答案是:能
一、 配套工具
正如第三篇里提到,微软这方面相关软件对版本兼容性要求太严格,不同版本之间兼容性并不好,所以首先要保证SSAS、SQL Server和Power BI的版本统一。本文用到的版本如下:
- SQL Server 2019 开发版(功能齐全)
- SSMS 2018 (版本影响相对较小)
- Visual Studio 2019 社区版,下载安装配套的SSAS扩展包
- Power BI RS版,2021年1月版
- Power BI Report Server,2021年1月版
二、 基本步骤
1. 在SSMS上连接Power BI数据模型
2. 模型脚本化
3. 调整模型脚本
4. 在SSAS中运行脚本
5. 在SSDT中调整该模型
6. 部署模型
三、 在SSMS上连接Power BI数据模型
首先我们打开Power BI文件,然后用Dax Studio连接该文件以获得临时的服务器名称(即下图中红框内文本)。然后打开SSMS,连接窗口中,服务器类型选择Analysis Engine,服务器名称填入刚刚获得的名称,登陆即可。
四、 Power BI 模型脚本化
连接模型后,右键该模型数据库,如下图所示依次选择【脚本】、【编写数据库脚本为】、【create 到】、【新查询编辑器窗口】。即可将该数据库模型转化为一大段XMLA脚本。我们无需知道脚本的语法规则,只需知道,Power BI的模型、表关系、计算列、度量值等信心统统浓缩到这个脚本里了。
五、 脚本调整
接下来的目的是在SSAS中通过这段脚本还原Power BI模型。但在运行这段脚本之前,我们要进行微调。
- 把数字 字母的长串名称改为自己方便理解和使用的名称,如project_A
- 把兼容性级别(“compatibilityLevel")的1535 改为1500。这是专门针对上文的软件版本。如果使用2016版,要改为1200。
- 把下图最下面红框三行直接删掉。
六、 在SSAS中运行脚本
我们继续用SSMS连接本地SSAS数据库,并右键任意一个SSAS数据库,选择【新建查询】——【XMLA(X)】。然后把刚刚修改完的脚本直接复制到这个空的XMLA文件里,按运行。
运行成功后,在下方将出现如下提示,并在SSAS中会新增一个按上一个步骤自定义命名的数据库。
七、 在SSDT(Visual Studio)中调整模型并部署
此时,我们已经成功将Power BI数据模型复制导入到了SSAS中,该模型以名称为project_A的SSAS数据库存在。它包含了所有的表结构、关系、计算列、度量值等。唯一空缺的是数据。为了更方便调整和编辑,我们可以以导入的方式新建一个SSAS数据库项目project_B,在该项目上新增数据源,并执行和部署。
首先打开Visual Studio, 创建SSAS表格项目。不同于常规方式,我们选择从服务器导入的方式。
然后选择project_A数据库,并将该项目命名为project_B。这些步骤跟第三篇里提到的相同。通过此方式新建的项目模型,已经具备了所有的表结构和关系等。接下来我们只需在数据源上添加我们的数据源连接设置即可。
最后,点【处理】全部表,并【生成】和【部署】项目,整个模型就实实在在地在SSAS中搭建好了。
------------
最后,感谢在本人摸索过程中提供经验帮助的网友【透明人】,以及推荐一篇国外MVP的博客:Import Power BI Desktop Model to SSAS Tabular 2016 。该文章主要使用SSAS2015和2016版,并提到了一些值得注意的细节。详见【阅读原文】的文末。