Power Query中合并禁刷新与可刷新表的有效实现方案咨询
Power Query实现Oracle增量合并且仅刷新增量表方案
步骤1:配置历史表(表1)的连接
- 在Power Query中导入表1(查询语句:
SELECT * FROM DB WHERE DB.date < TO_DATE('2023-12-01','DD-MM-YYYY')),完成数据加载后,右键该查询选择仅创建连接,将其命名为历史表_仅连接。 - 右键
历史表_仅连接→属性,取消勾选「刷新此连接时刷新」,确保后续自动刷新不会触发该查询。
步骤2:配置增量表(表2)的连接
- 正常导入表2(查询语句:
SELECT * FROM DB WHERE DB.date >= TO_DATE('2023-12-01','DD-MM-YYYY')),命名为增量表,保留默认的刷新设置(即刷新时同步更新)。
步骤3:在Power Query中合并两表(替代原表0)
- 新建空白查询,命名为表0(和原表名称完全一致,避免修改报表公式)。
- 打开该查询的高级编辑器,替换为以下M代码:
let 加载历史数据 = #"历史表_仅连接", 加载增量数据 = #"增量表", 合并表 = Table.Combine({加载历史数据, 加载增量数据}) in 合并表
- 确认两表列结构(列名、数据类型)完全一致,否则
Table.Combine会因列不匹配报错。
效果说明
- 每次刷新时,仅
增量表会从Oracle拉取最新数据,历史表保持静态,大幅缩短刷新耗时。 - 合并后的
表0和原表结构、名称完全相同,报表中所有依赖原表0的公式无需修改,直接复用。 - 相比DAX的
UNION(),Power Query的Table.Combine在查询层完成合并,内存占用更低,避免模型层合并的性能问题。
特殊场景处理
如果后续需要调整历史数据的截止日期(比如更新表1的筛选条件),只需手动刷新一次历史表_仅连接即可,平时无需干预。
内容的提问来源于stack exchange,提问作者Javier Lopez
相关产品推荐
相关产品推荐

