PowerBI的引擎继承自SSAS,所以可以将PowerBI的模型迁移至SSAS中,本篇文章将介绍迁移PowerBI模型到SSAS里的方法。
在进行迁移之前,需要安装以下软件或工具:
- SQL Server
- SQL Server Analysis Server (SSAS)
- SQL Server Management Studio (SSMS)
- Visual Studio
- PowerBI Desktop
- DAX Studio
- Tabular Editor
获取PowerBI模型的创建脚本
首先需要获取PowerBI模型的创建脚本,通过该脚本即可在不同的SSAS实例上创建具有相同元数据的模型或数据集。为方便理解,可以类比为备份数据库时导出的SQL文件,在SQL文件里有创建数据库以及插入数据等一系列的SQL代码,那么PowerBI模型的创建脚本也是一样的道理。
该创建脚本的获取方式有两种,一种是借助SSMS,另一种则是借助Tabular Editor。
SSMS方式:
1、打开PowerBI文件,点击外部工具,打开DAX Studio
2、在DAX Studio的右下角处找到临时SSAS实例的服务器地址(如果PowerBI模型位于云端,可以先下载到本地,或直接使用工作区连接代替,前提是工作区位于高级容量中,使用共享容量的工作区不存在工作区连接)
3、打开SSMS,连接到Analysis Services,在服务器名称里填入上面获取到的服务器地址
4、如果是临时SSAS实例,那么连接后只有一个模型,如果是PowerBI云端工作区连接,那么连接后需要选择对应的模型。然后如下图所示,即可获取到PowerBI模型的创建脚本
Tabular Editor方式:
1、打开PowerBI文件,点击外部工具,打开Tabular Editor
2、点击上方菜单的Model选项卡,并选择Deploy
3、输入任意SSAS实例的服务器地址,然后点击下一步
4、输入想要创建的SSAS模型的名称,然后点击下一步
5、根据自身情况勾选相应选项,一般保持默认即可,然后点击下一步
6、点击TMSL Script按钮
7、将弹窗里的代码复制保存,这就是我们所需要的PowerBI模型的创建脚本
8、关闭Tabular Editor的所有界面,注意第六步中不要点击Deploy
使用脚本创建SSAS模型
1、打开SSMS,连接到迁移目标的SSAS实例
2、在服务器位置,右键选择新建查询,并选择XMLA查询
3、在弹出的空白查询窗口里,将获取到的PowerBI模型创建脚本粘贴进去
4、修改Database名称,并删掉tables前面的前几行代码(根据版本不同,有的是两行,有点是三行,视情况而定)
5、修改兼容性级别,根据服务器版本进行更改,本案例中用的是2019版本的,因此兼容性级别需要更改为1500
6、删除“lineageTag”标签所在的行(针对2019版本,2022版本可不删)
- 在XMLA查询窗口里点击任意位置,激活界面,然后按“Ctrl+H”快捷键唤出文本替换工具
- 使用正则表达式将包含“lineageTag”标签的行删掉
- 正则表达式:"lineageTag": ".*?",?\r\n
7、点击执行按钮,即可创建SSAS模型,然后在左侧对象资源管理器里刷新一下即可看到新创建的模型
Visual Studio导入SSAS模型获取工程文件
经过以上步骤后,PowerBI模型已经初步迁移到SSAS里,但想要更改模型,那么将无从下手。因此我们还需要获取模型的工程文件,以方便后续的编辑与改动。
1、打开Visual Studio,创建一个新项目
2、选择“从服务器导入(表格)”的项目模板
3、配置项目信息
4、根据自身情况选择工作区,一般使用集成工作区即可
5、输入迁移目标的SSAS服务器地址,及迁移过去的模型
6、等待一段时间后,即可获取到对应模型的工程文件,添加相应的数据源后即可进行编辑与改动
7、至此,整个迁移过程已全部完成
总结
从上面的步骤中可以看到,整个迁移过程的思路很简单,先导出现有PowerBI模型的创建脚本,然后在迁移目标的SSAS实例里运行该脚本,最后再使用Visual Studio获取相应的工程文件以进行后续的编辑与开发。
那么可能会有小伙伴想到,为何不使用Visual Studio一步到位,直接从现有PowerBI模型对应的临时SSAS实例或云端工作区对应的SSAS实例里直接获取工程文件,最后再部署到迁移目标的SSAS实例里。该思路很好,但可惜行不通,因为版本或兼容性等各种问题,该路线被限制了。
比如从云端工作区里导入时会提示不支持:
因此只能是走先获取创建脚本,再创建SSAS模型,最后再获取工程文件的方案。