业务场景:
企业初期在进行 BI 可视化路线的时候,往往不会选择方案较为完整的SSAS,而是会选择轻量的 PowerBI 方案,究其根本还是软件成本的问题。
但是随着模型越来越臃肿,维护成本越来越高,有很多模型需要进行增量更新,这种情况下,服务器吃不消,需要 SSAS 进行负载分摊,那么如何将 PoweBI 已经搭建好的模型转移到SSAS中呢?
配套工具
-
SQL Server
-
SSMS
-
Visual Studio
-
PowerBI
-
DAX Sudio 或 Tabular Editor
注意,如果想将 PowerBI 的模型完整迁移到 SSAS 中,我们需要获取到
Model的TMSL
脚本。
获取 TMSL 脚本
方法 1:利用 DAX Studio 获取
打开需要迁移到 SSAS 模型的 PowerBI 文件,在外部工具
找到 DAX Studio 并打开。
在 DAX Studio 界面,记录下右下角
的临时地址。
打开SSMS,选择连接到 Analysis Services,输入上面记录的临时地址,使用Windows验证
的方式连接。
依次选择 Script-Script Database as-Create or Replace to-New Query Editor Window。
此时,获取到的脚本即为 PowerBI 模型的TMSL
脚本。
方法 2:利用 Tabular Editor 获取
打开需要迁移到 SSAS 模型的 PowerBI 文件,在外部工具
找到 Tabular Editor 并打开。
在 Tabular Editor 工具栏中点击Model
,选择Deploy
。
输入 Server 地址。
点击下一步,在 Database Name 输入想要创建的SSAS模型
名称。
点击下一步,根据自身情况,勾选相关选项,通常情况下保持默认选项即可。
点击下一步,选择TMSL Script
。
此时,获取到的脚本即为 PowerBI 模型的TMSL
脚本。
部署模型
打开SSMS,选择Analysis Services,连接到服务器。
在服务器位置点击鼠标右键,依次点击New Query-XMLA创建空白查询。
将利用DAX Studio或Tabular Editor暂存的TMSL
脚本Copy过来。
修改database,这个是SSAS数据库名称。
删除“tables”前面的代码。
注意,
PowerBI版本
不同,需要删掉的行数也不同,有的是2行,有的是3行,视情况而定。
修改“compatibilityLevel”,这个是版本兼容性。
注意,如果部署到SQL Server2019,那么这里修改成
1500
;
如果部署到SQL Server2022,那么这里保持不动,或修改成1600
都可以。
删除“lineagetag”标签。
-
在脚本界面,按下“Ctrl”+"F"按键,对脚本执行替换;
-
启用正则将整个包含lineagetag的行进行删除。
注意,删除标签针对的是SQL Server2019,如果是SQL Server2022则无需进行删除。
两个正则表达式如下:
"lineageTag": ".*?"\r\n
"lineageTag": ".*?",\r\n
接下来,执行部署即可,出现如下提示即为部署成功。
至此,PowerBI模型已经完整迁移到SSAS模型。
看到这里,相信小伙伴们还是有点疑惑:白茶,迁移是完成了,如果我后续要对模型进行修改
呢?别急,往下看。
模型导入Visual Studio
打开Visual Studio选择创建新项目。
选择从服务器导入(表格)
。
配置项目信息。
根据自身情况,设定工作区,兼容性无需调整。
输入服务器名称,选择导入的SSAS数据库。
等待一段时间后,可以看到整个PowerBI模型已经导入到SSAS中,后续更新完成后,可以将其重新部署到SSAS模型中。
注意事项
-
此方案为企业级应用,不建议小白用户尝试;
-
迁移之前请仔细核对Visual Studio版本;
-
暂时无法从Visual Studio反向迁移到PowerBI。