如何批量生成数百个PowerBI报表的SQL Server/Azure数据源列表?
批量提取PowerBI报表所依赖的SQL Server/Azure表/视图列表
不需要逐个打开查询编辑器,有几种高效的批量处理方案:
1. PowerShell 脚本(适用于云端/本地PBIX)
借助MicrosoftPowerBIMgmt模块可以批量扫描PowerBI工作区或本地PBIX文件,提取数据源和表信息:
# 安装模块(首次运行) Install-Module -Name MicrosoftPowerBIMgmt -Scope CurrentUser # 连接PowerBI服务 Connect-PowerBIServiceAccount # 指定目标工作区ID $workspaceId = "你的工作区ID" # 获取工作区所有数据集 $datasets = Get-PowerBIDataset -WorkspaceId $workspaceId foreach ($dataset in $datasets) { # 获取数据集的表信息 $tables = Get-PowerBITable -DatasetId $dataset.Id -WorkspaceId $workspaceId foreach ($table in $tables) { # 提取表的数据源连接和源对象(表/视图) $source = $table.Source if ($source.Type -eq "Sql") { Write-Output "报表: $($dataset.Name) | 数据源: $($source.Server) | 数据库: $($source.Database) | 表/视图: $($source.SqlQuery -replace 'SELECT.*FROM ','')" } } }
如果是本地PBIX文件,可以用Import-PowerBIXml解析文件内容,提取相同的数据源信息。
2. Tabular Editor 工具
这是免费的开源工具,支持批量处理PowerBI模型:
- 打开Tabular Editor,加载目标PBIX文件或连接到云端PowerBI数据集
- 在左侧模型树中选中所有表,右键选择Export > Export Table Properties
- 在导出设置中勾选
Source属性,即可生成包含所有表/视图及其数据源的CSV文件
3. DAX Studio 查询DMV
连接到PowerBI数据集后,运行以下DMV查询直接获取表和数据源关联信息:
SELECT t.Name AS TableName, s.ConnectionString, s.Name AS DataSourceName, t.SourceExpression FROM $SYSTEM.TMSCHEMA_TABLES t JOIN $SYSTEM.TMSCHEMA_DATA_SOURCES s ON t.DataSourceID = s.ID WHERE s.ConnectionType = 'SQL'
查询结果会返回每个表对应的数据源连接和源表达式(从中可以提取表/视图名称)。
关于Microsoft Purview的现状
旧论坛的信息已经过时,当前Purview完全支持SQL Server和Azure数据源的扫描,并且可以自动识别PowerBI报表与底层SQL表/视图的血缘关系:
- 配置Purview扫描PowerBI工作区和对应的SQL Server/Azure数据库
- 在Purview数据目录中,直接查看任意PowerBI报表的血缘关系,就能看到它依赖的所有表/视图
- 还可以批量导出报表与数据源的关联清单,满足你的需求
内容的提问来源于stack exchange,提问作者pratjjj
相关产品推荐
相关产品推荐

