Table of Contents

什么是刷新策略?

增量刷新 Visual 摘要


托管在 Power BI 服务中的 Dataset 可以为一个或多个数据表配置增量刷新增量刷新的目的,是通过仅检索最近/发生变化的数据来实现更快、更高效的刷新,以“增量”的方式刷新表。 为此,表会被自动划分为多个分区:只有最近或发生变化的数据会被 刷新(“热”分区),甚至还可以 实时检索(“混合表格”中的“Direct Query”分区;而 较旧、静态的数据会被归档(“冷”分区)。

可在 Tabular Editor 中轻松配置并修改增量刷新。

Note

配置增量刷新可为 Data model 带来以下好处:

  • 减少刷新时间和资源消耗
  • 计划刷新耗时更短、更可靠
Important

在 Tabular Editor 3 中配置增量刷新仅适用于托管在 Power BI Dataset 服务中的 Dataset。 对于 Analysis Services,需要自定义分区


它是如何工作的?

为创建这些分区,Power BI 会在 Power Query 中使用 RangeStartRangeEnd 这两个 datetime 参数。 这些参数会用于表分区的 M 表达式中的筛选步骤,对表中的日期时间列进行筛选。 即使是日期、字符串或整数类型的列,也可以通过使用函数将 RangeStartRangeEnd 或日期列转换为合适的数据类型,在保持查询折叠的同时进行筛选。 有关更多信息,请参见这里

下面给出一个示例。 已针对表 '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 用户界面。


刷新策略属性

Properties of Incremental Refresh

一个基础的刷新策略由四类不同的属性组成:

  1. 增量窗口 属性:在该时间窗口内,数据会保持 最新
  2. 滚动窗口 属性:在该时间窗口内,数据会被 归档
  3. 源表达式:定义表架构以及该表的 Power Query 转换。
  4. 模式:是否使用 Import 表或 Hybrid 表。

增量刷新策略窗口


与 Power BI Desktop 对比

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

增量刷新刷新策略窗口属性


高级属性

增量刷新的具体行为会因所配置的属性而异。 下面概述了不同的增量刷新配置:

在增量刷新的标准配置中,所有分区都会导入到内存中。 滚动窗口中的分区会被归档,而增量窗口中的分区会被刷新。

所有属性概览

下面概述了 Data model 中用于配置增量刷新的 TOM 属性:

属性名称 Power BI Desktop 中的对应项 说明 期望值
EnableRefreshPolicy 对此表进行增量刷新 是否为该表启用刷新策略。

在 Tabular Editor 中,只有当此值设置为 True 时,其他刷新策略属性才会显示。
TrueFalse
IncrementalGranularity 增量刷新周期 增量窗口的粒度。

示例:
"在刷新日期之前的最近 30 内刷新数据。"
Day, Month, Quarter or Year。 必须小于或等于 IncrementalGranularity.
IncrementalPeriods 增量刷新周期数 增量窗口包含的周期数量。

示例:
"在刷新日期之前的最近 30 天内刷新数据。"
一个整数,表示 IncrementalGranularity 周期的数量。 必须定义一个总周期,且小于 RollingWindowPeriods
IncrementalPeriodsOffset 仅刷新完整的天 应用于 IncrementalPeriods 的偏移量。

示例如下:
IncrementalPeriodsOffset = -1;
IncrementalPeriods = 30;
IncrementalGranularity = Day:
"只刷新从刷新日期前一天开始往前数最近 30 天的数据。
一个整数,表示将增量窗口按 IncrementalGranularity 的周期数进行平移。
模式 使用 DirectQuery 实时获取最新数据 指定增量刷新是仅配置为导入分区,还是同时包含一个 DirectQuery 分区,以生成 “混合表格” ImportHybrid
PolicyType 不适用 指定刷新策略的类型。 只能包含一个值:Basic
PollingExpression
(可选)
检测数据更改 用于检测特定列(例如 LastUpdateDate)变更的 M 表达式

在 Tabular Editor 中,从左上角的下拉菜单中选择该项后,即可在 表达式编辑器 窗口中查看并修改 PollingExpression
属性名称 Power BI Desktop 对应项 说明 预期值
EnableRefreshPolicy 对该表进行增量刷新 是否为这个表启用刷新策略。

在 Tabular Editor 中,只有把这个值设置为 True,其他刷新策略属性才会显示。
TrueFalse
IncrementalGranularity 增量刷新周期 增量窗口的粒度。

示例:
“在刷新日期之前,刷新最近 30 的数据。”
DayMonthQuarterYear。 必须小于或等于 IncrementalGranularity 的值。
IncrementalPeriods 增量刷新周期数 增量窗口包含的周期数。

示例:
“在刷新日期之前,刷新最近 30 天的数据。”
一个整数,表示 IncrementalGranularity 周期的数量。 必须定义一个小于 RollingWindowPeriods 的总周期
IncrementalPeriodsOffset 仅刷新完整的天 要应用于 IncrementalPeriods 的偏移量。

示例:
IncrementalPeriodsOffset=-1;
IncrementalPeriods = 30;
IncrementalGranularity = Day:
"仅刷新最近 30 天的数据,从刷新日期的前一天开始。"
一个整数,表示将增量窗口按 IncrementalGranularity 周期平移的数量。
Mode 使用 DirectQuery 实时获取最新数据 指定增量刷新是只配置导入分区,还是同时配置 DirectQuery 分区,从而形成 “混合表格” ImportHybrid
PolicyType 不适用 指定刷新策略的类型。 只能包含一个值:Basic
PollingExpression
(Optional)
检测数据更改 用于检测特定列的数据变化的 M 表达式,例如 LastUpdateDate

在 Tabular Editor 中,在左上角的下拉菜单中选择后,可在 Expression Editor 表达式编辑器窗口中查看并修改 Polling Expression
一个有效的 M 表达式,返回某列中最新日期的标量值。 增量窗口内的热分区中,该列包含该值的所有记录都会被刷新。

归档分区中的记录不会被刷新。
RollingWindowGranularity 数据归档周期 滚动窗口的粒度。

示例:
"从刷新日期往前 3 开始归档数据。"
DayMonthQuarterYear。 必须大于或等于 IncrementalGranularity。
RollingWindowPeriods 归档数据周期数 滚动窗口的周期数。

示例:
“从刷新日期往前 3 年开始归档数据。”
一个整数,表示 RollingWindowGranularity 周期的数量。 必须定义一个总周期,其长度大于 IncrementalPeriods
SourceExpression Power Query 源表达式 表数据源的 M 表达式。 这里存放原始表的 M 表达式;任何现有的 Power Query 转换也需要在这里进行修改。

在 Tabular Editor 中,从左上角的下拉菜单选择 Source Expression 后,即可在 表达式编辑器 中查看并修改
一个有效的 M 表达式,其中包含筛选步骤,并且正确使用 RangeStartRangeEnd