什么是刷新策略?

托管在 Power BI 服务中的 Dataset 可以为一个或多个数据表配置增量刷新。 增量刷新的目的,是通过仅检索最近/发生变化的数据来实现更快、更高效的刷新,以“增量”的方式刷新表。 为此,表会被自动划分为多个分区:只有最近或发生变化的数据会被 刷新(“热”分区),甚至还可以 实时检索(“混合表格”中的“Direct Query”分区);而 较旧、静态的数据会被归档(“冷”分区)。
可在 Tabular Editor 中轻松配置并修改增量刷新。
Note
配置增量刷新可为 Data model 带来以下好处:
- 减少刷新时间和资源消耗
- 计划刷新耗时更短、更可靠
Important
在 Tabular Editor 3 中配置增量刷新仅适用于托管在 Power BI Dataset 服务中的 Dataset。 对于 Analysis Services,需要自定义分区。
它是如何工作的?
为创建这些分区,Power BI 会在 Power Query 中使用 RangeStart 和 RangeEnd 这两个 datetime 参数。 这些参数会用于表分区的 M 表达式中的筛选步骤,对表中的日期时间列进行筛选。 即使是日期、字符串或整数类型的列,也可以通过使用函数将 RangeStart、RangeEnd 或日期列转换为合适的数据类型,在保持查询折叠的同时进行筛选。 有关更多信息,请参见这里
下面给出一个示例。 已针对表 'Orders' 的 [Order Date] 列应用增量刷新:
// 增量刷新筛选步骤最好能够折叠回数据源
// 在此之前的任何步骤都不应破坏查询折叠
#"Incremental Refresh Filter Step" =
Table.SelectRows(
Navigation,
each
[OrderDate] >= #"RangeStart" and
[OrderDate] < #"RangeEnd"
)
Warning
增量刷新专为支持 Power Query 查询折叠 的数据源而设计。 理想情况下,在应用筛选步骤之前不应破坏 查询折叠。 最终查询并不要求必须折叠,除非在实现使用 DirectQuery 的 混合表格 时。
什么是刷新策略?
刷新策略 决定数据如何分区,以及这些策略范围分区中哪些会在刷新时更新。 它由一组可设置或更改的表 TOM 属性组成。
Warning
Power BI Desktop 限制: 不支持在连接到本地 Power BI Desktop 模型时配置增量刷新。 要为本地 Power BI Desktop 模型配置增量刷新,请使用 Power BI Desktop 用户界面。
刷新策略属性
一个基础的刷新策略由四类不同的属性组成:
- 增量窗口 属性:在该时间窗口内,数据会保持 最新。
- 滚动窗口 属性:在该时间窗口内,数据会被 归档。
- 源表达式:定义表架构以及该表的 Power Query 转换。
- 模式:是否使用
Import表或Hybrid表。

与 Power BI Desktop 对比
在 Power BI Desktop 中,这些属性的名称有所不同。 下面概述了这些属性与 Power BI Desktop 用户界面的对应关系。

高级属性
增量刷新的具体行为会因所配置的属性而异。 下面概述了不同的增量刷新配置:
所有属性概览
下面概述了 Data model 中用于配置增量刷新的 TOM 属性:
| 属性名称 | Power BI Desktop 中的对应项 | 说明 | 期望值 | |||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| EnableRefreshPolicy | 对此表进行增量刷新 | 是否为该表启用刷新策略。 在 Tabular Editor 中,只有当此值设置为 True 时,其他刷新策略属性才会显示。 |
True 或 False。 |
|||||||||||||||||||||||||||||||||||||||||||
| IncrementalGranularity | 增量刷新周期 | 增量窗口的粒度。 示例: "在刷新日期之前的最近 30 天内刷新数据。" |
Day, Month, Quarter or Year。 必须小于或等于 IncrementalGranularity. |
|||||||||||||||||||||||||||||||||||||||||||
| IncrementalPeriods | 增量刷新周期数 | 增量窗口包含的周期数量。 示例: "在刷新日期之前的最近 30 天内刷新数据。" |
一个整数,表示 IncrementalGranularity 周期的数量。 必须定义一个总周期,且小于 RollingWindowPeriods | |||||||||||||||||||||||||||||||||||||||||||
| IncrementalPeriodsOffset | 仅刷新完整的天 | 应用于 IncrementalPeriods 的偏移量。 示例如下: IncrementalPeriodsOffset = -1; IncrementalPeriods = 30;IncrementalGranularity = Day: "只刷新从刷新日期前一天开始往前数最近 30 天的数据。 |
一个整数,表示将增量窗口按 IncrementalGranularity 的周期数进行平移。 | |||||||||||||||||||||||||||||||||||||||||||
| 模式 | 使用 DirectQuery 实时获取最新数据 | 指定增量刷新是仅配置为导入分区,还是同时包含一个 DirectQuery 分区,以生成 “混合表格”。 | Import 或 Hybrid。 |
|||||||||||||||||||||||||||||||||||||||||||
| PolicyType | 不适用 | 指定刷新策略的类型。 | 只能包含一个值:Basic。 |
|||||||||||||||||||||||||||||||||||||||||||
| PollingExpression (可选) |
检测数据更改 | 用于检测特定列(例如 LastUpdateDate)变更的 M 表达式 在 Tabular Editor 中,从左上角的下拉菜单中选择该项后,即可在 表达式编辑器 窗口中查看并修改 PollingExpression。 | 。
| 属性名称 | Power BI Desktop 对应项 | 说明 | 预期值 |
|---|---|---|---|
| EnableRefreshPolicy | 对该表进行增量刷新 | 是否为这个表启用刷新策略。 在 Tabular Editor 中,只有把这个值设置为 True,其他刷新策略属性才会显示。 |
True 或 False。 |
| IncrementalGranularity | 增量刷新周期 | 增量窗口的粒度。 示例: “在刷新日期之前,刷新最近 30 天的数据。” |
Day、Month、Quarter 或 Year。 必须小于或等于 IncrementalGranularity 的值。 |
| IncrementalPeriods | 增量刷新周期数 | 增量窗口包含的周期数。 示例: “在刷新日期之前,刷新最近 30 天的数据。” |
一个整数,表示 IncrementalGranularity 周期的数量。 必须定义一个小于 RollingWindowPeriods 的总周期 |
| IncrementalPeriodsOffset | 仅刷新完整的天 | 要应用于 IncrementalPeriods 的偏移量。 示例: IncrementalPeriodsOffset= -1; IncrementalPeriods = 30;IncrementalGranularity = Day: "仅刷新最近 30 天的数据,从刷新日期的前一天开始。" |
一个整数,表示将增量窗口按 IncrementalGranularity 周期平移的数量。 |
| Mode | 使用 DirectQuery 实时获取最新数据 | 指定增量刷新是只配置导入分区,还是同时配置 DirectQuery 分区,从而形成 “混合表格”。 | Import 或 Hybrid。 |
| PolicyType | 不适用 | 指定刷新策略的类型。 | 只能包含一个值:Basic。 |
| PollingExpression (Optional) |
检测数据更改 | 用于检测特定列的数据变化的 M 表达式,例如 LastUpdateDate 在 Tabular Editor 中,在左上角的下拉菜单中选择后,可在 Expression Editor 表达式编辑器窗口中查看并修改 Polling Expression。 | 一个有效的 M 表达式,返回某列中最新日期的标量值。 增量窗口内的热分区中,该列包含该值的所有记录都会被刷新。 归档分区中的记录不会被刷新。 |
| RollingWindowGranularity | 数据归档周期 | 滚动窗口的粒度。 示例: "从刷新日期往前 3 年开始归档数据。" |
Day、Month、Quarter 或 Year。 必须大于或等于 IncrementalGranularity。 |
| RollingWindowPeriods | 归档数据周期数 | 滚动窗口的周期数。 示例: “从刷新日期往前 3 年开始归档数据。” |
一个整数,表示 RollingWindowGranularity 周期的数量。 必须定义一个总周期,其长度大于 IncrementalPeriods |
| SourceExpression | Power Query 源表达式 | 表数据源的 M 表达式。 这里存放原始表的 M 表达式;任何现有的 Power Query 转换也需要在这里进行修改。 在 Tabular Editor 中,从左上角的下拉菜单选择 Source Expression 后,即可在 表达式编辑器 中查看并修改。 |
一个有效的 M 表达式,其中包含筛选步骤,并且正确使用 RangeStart 和 RangeEnd。 |


