Table of Contents

什么是刷新策略?

增量刷新 Visual 摘要


托管在 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 用户界面。


刷新策略属性

增量刷新的属性

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

  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 时,其他刷新策略属性才会显示。
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。