什么是刷新策略?

托管在 Power BI 服务中的 Dataset 可以为一个或多个数据表配置 增量刷新。增量刷新的目的,是通过仅检索最近/发生变化的数据来实现更快、更高效的刷新,以“增量”的方式刷新表。 为此,Dataset 中的表会被自动划分为多个分区:只有最近或发生变化的数据会被 刷新(“热”分区),甚至还可以 实时检索(“混合表格”中的“Direct Query”分区);而 较旧、静态的数据会被归档(“冷”分区)。
可在 Tabular Editor 中轻松配置并修改增量刷新。
Note
配置增量刷新可为 Data model 带来以下好处:
- 减少刷新时间和资源消耗
- 计划刷新耗时更短、更可靠
Important
在 Tabular Editor 3 中设置增量刷新仅限于托管在 Power BI Dataset 服务中的数据集。对于 Analysis Services,需要自定义分区。
它是如何工作的?
为创建这些分区,Power BI 会在 Power Query 中使用 RangeStart 和 RangeEnd 这两个 datetime 参数。这些参数用于表分区 M 表达式中的筛选步骤,对表中的日期时间列进行筛选。对于日期、字符串或整数类型的列,仍可通过使用函数将 RangeStart、RangeEnd 或日期列转换为适当的数据类型来进行筛选,同时保持查询折叠。有关此内容的更多信息,请参见 此处
下面给出一个示例。已针对表 'Orders' 的 [Order Date] 列应用增量刷新:
// The filter step should ideally be able to fold back to the data source
// No steps before this should break query folding
#"Incremental Refresh Filter Step" =
Table.SelectRows(
Navigation,
each
[OrderDate] >= #"RangeStart" and
[OrderDate] < #"RangeEnd"
)
Warning
增量刷新专为支持 Power Query 查询折叠 的数据源而设计。理想情况下,在应用筛选步骤之前,查询折叠不应被中断。除在实现 混合表格 时之外,最终查询并不要求必须进行查询折叠。
什么是刷新策略?
刷新策略 决定数据如何分区,以及这些策略范围分区中哪些会在刷新时更新。它由一组可设置或更改的表 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 实时获取最新数据 | 指定 Dataset 的增量刷新是只配置导入分区,还是同时配置 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 实时获取最新数据 | 指定 Dataset 的增量刷新是只配置导入分区,还是同时配置 DirectQuery 分区,从而形成 “混合表格”。 | Import 或 Hybrid。 |
| PolicyType | 不适用 | 指定刷新策略的类型。 | 只能包含一个值:Basic。 |
| PollingExpression (可选) |
检测数据更改 | 用于检测特定列的数据变化的 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。 |


