在Tabular Model中用Power Query合并不同SQL数据源的同结构表
跨SQL Server数据源追加结构一致的表(Power Query实现)
完全可以通过Power Query的高级编辑器/M语言实现跨数据源的表追加操作,具体步骤如下:
1. 确认数据源连接
确保已在Power Query中分别建立与Company1DB和Company2DB这两个SQL Server数据库的有效连接,且能正常访问两张FactData表。
2. 使用M语言合并表
打开Power Query高级编辑器,替换原有代码为以下内容(根据实际环境调整服务器地址、Schema名称):
let // 加载第一个数据库的FactData表 Source1 = Sql.Database("你的SQL服务器地址", "Company1DB"), FactData1 = Source1{[Schema="dbo", Item="FactData"]}[Data], // 加载第二个数据库的FactData表 Source2 = Sql.Database("你的SQL服务器地址", "Company2DB"), FactData2 = Source2{[Schema="dbo", Item="FactData"]}[Data], // 直接追加两张结构一致的表 CombinedTable = Table.Combine({FactData1, FactData2}) in CombinedTable
提示:若两个数据库不在同一服务器上,分别修改
Sql.Database的第一个参数为对应服务器地址;Schema若不是dbo,同步调整Schema字段值即可。
3. 后续数据转换(如新增唯一ID)
如果需要处理合并后的重复值、添加唯一外键,可在CombinedTable步骤后追加转换逻辑,例如添加自增唯一ID:
// 新增自增唯一ID列 AddUniqueID = Table.AddIndexColumn(CombinedTable, "UniqueID", 1, 1)
最后将代码末尾in后的CombinedTable替换为AddUniqueID即可。
示例验证
源数据1(Company1DB\FactData)
| CompanyName | Person | Sales |
|---|---|---|
| A | Peter | 100 |
| A | Sue | 200 |
源数据2(Company2DB\FactData)
| CompanyName | Person | Sales |
|---|---|---|
| B | Peter | 300 |
| B | Sue | 400 |
合并后结果(含可选唯一ID)
| CompanyName | Person | Sales | UniqueID |
|---|---|---|---|
| A | Peter | 100 | 1 |
| A | Sue | 200 | 2 |
| B | Peter | 300 | 3 |
| B | Sue | 400 | 4 |
内容的提问来源于stack exchange,提问作者nlouw
相关产品推荐
相关产品推荐

