渐变维度转换

适用于:SQL ServerAzure 数据工厂中的 SSIS Integration Runtime

缓慢变化维转换协调对数据仓库维度表中记录的更新和插入操作。 例如,您可以使用此转换来配置转换输出,使其使用 AdventureWorks OLTP 数据库中 Production.Products 表的数据,在 AdventureWorksDW2025 数据库的 DimProduct 表中插入和更新记录。

重要

渐变维度向导仅支持与 SQL Server的连接。

“缓慢变化维度”转换提供以下用于管理缓慢变化维度的功能:

  • 将传入行与查找表中的行匹配,以标识新行和现有行。

  • 在不允许更改时标识含有更改的传入行。

  • 识别需要更新的推断成员记录。

  • 识别包含历史变更、因而需要插入新记录并更新已过期记录的传入行。

  • 检测包含需要更新现有记录(包括过期记录)的更改的传入行。

缓慢变化维度转换支持四种更改类型:变化属性、历史属性、固定属性和推断成员。

  • 变化的属性更改覆盖现有记录。 此类更改等效于类型 1 更改。 缓慢变化维度转换将这些行定向至名为 “更改属性更新输出” 的输出。

  • 历史属性更改创建新记录而不更新现有记录。 现有记录中允许的唯一更改是对指示记录是当前记录还是过期记录的列的更新。 此类更改等效于类型 2 更改。 渐变维度转换将这些行定向到两个输出: “历史属性插入输出”“新输出”

  • 固定属性更改表示列值不得更改。 渐变维度转换检测更改,并可将带有更改的行定向到名为 “固定的属性输出”的输出。

  • 推断成员表示该行是维度表中的一条推断成员记录。 当事实数据表引用尚未加载的维度成员时会存在推断成员。 为预先应对相关维度数据而创建一条最小的推断成员记录,这些数据将在后续加载维度数据时提供。 缓慢变化维度转换将这些行发送到名为 “推断成员更新” 的输出。 当加载推断成员的数据后,可以更新现有记录,而不必创建一个新记录。

注意

缓慢变化维度转换不支持第 3 类更改,而这种更改需要对维度表进行修改。 通过标识具有固定的属性更新类型的列,可以捕获作为类型 3 更改候选项的数据值。

在运行时,缓慢变化维度转换首先尝试将输入行与查找表中的记录进行匹配。 如果找不到匹配项,则传入行是一条新记录;因此渐变维度转换将不再执行其他工作,而是将传入行定向到 “新输出”

如果找到匹配项,缓慢变化维度转换会检查该行是否包含更改。 如果该行包含更改,渐变维度转换标识每列的更新类型,并将该行定向到 “变化的属性更新输出”“固定的属性输出”“历史属性插入输出”“推断成员更新输出”。 如果该行未更改,缓慢变化维度转换会将该行发送到 未更改输出

缓慢变化维度转换输出

缓慢变化维度转换有一个输入和最多六个输出。 输出将行定向到与该行的更新和插入要求相对应的数据流的子集。 此转换不支持错误输出。

下表描述了转换输出及其后续数据流的要求。 这些要求描述了“缓慢变化维度向导”创建的数据流。

输出 说明 数据流要求
更改属性会更新输出 查找表中的记录被更新。 此输出用于更改属性行。 OLE DB 命令转换使用 UPDATE 语句更新记录。
“固定的属性输出” 不得更改的行中的值与查找表中的值不匹配。 此输出用于固定的属性行。 没有创建默认数据流。 如果将该转换配置为在遇到固定属性列中的更改后继续运行,则应创建一个用于捕获这些行的数据流。
历史属性插入结果 查找表至少包含一个匹配行。 标记为“当前”的行现在必须标记为“过期”。 此输出用于历史属性行。 派生列转换会创建用于标识过期行和当前行的列。 OLE DB 命令转换会更新现在必须标记为“过期”的记录。 具有新列值的行将定向到“新输出”,将在此处插入该行并标记为“当前”。
推断的成员更新输出 会插入推断出的维度成员对应的行。 此输出用于推断成员行。 OLE DB 命令转换使用 SQL UPDATE 语句更新记录。
新输出 查找表不包含匹配行。 该行已添加到维度表中。 此输出用于新行和对历史属性行的更改。 派生列转换设置当前行标识符,而 OLE DB 目标组件则插入该行。
未更改的输出 查找表中的值与行值匹配。 此输出用于未更改的行。 因为渐变维度转换未执行任何操作,所以没有创建默认数据流。 如果要捕获这些行,则应为此输出创建数据流。

业务键

缓慢变化维度转换要求至少有一个业务键列。

缓慢变化维度转换不支持 NULL 业务键。 如果数据中包含业务键列为空的行,则应从数据流中删除这些行。 可使用有条件拆分转换筛选业务键列中包含空值的行。 有关详细信息,请参阅 Conditional Split Transformation

优化缓慢变化维转换的性能

有关如何提高缓慢变化维度转换性能的建议,请参阅 数据流性能功能

渐变维度转换故障排除

您可以记录“缓慢变化维”转换对外部数据提供程序发出的调用。 可以使用此日志记录功能,排查缓慢变化维度转换对外部数据源执行的连接、命令和查询中的问题。 若要记录缓慢变化维转换对外部数据提供程序所做的调用,请启用包日志记录,并在包级别选择 Diagnostic 事件。 有关详细信息,请参阅 包执行的疑难解答工具

配置缓慢变化维转换

可以通过 SSIS 设计器或以编程方式来设置属性。

有关可以在 “高级编辑器” 对话框中或以编程方式设置的属性的详细信息,请单击下列主题之一:

有关如何设置属性的详细信息,请参阅 设置数据流组件的属性

配置缓慢变化维转换输出

协调维度表中记录的更新和插入可以是一项复杂的任务,尤其是在同时使用了类型 1 和类型 2 更改的情况下。 SSIS 设计器为配置对渐变维度的支持提供了以下两种方式:

  • “高级编辑器” 对话框,在其中可以选择连接,设置公共组件属性和自定义组件属性,选择输入列,以及设置六个输出上的列属性。 若要完成为渐变维度配置支持的任务,必须为渐变维度转换所使用的输出手动创建数据流。 有关详细信息,请参阅 数据流

  • 加载维度向导,它将引导您完成配置缓慢变化维度转换并生成用于转换输出的数据流的各个步骤。 若要更改缓慢变化维度的配置,请重新运行加载维度向导。 有关详细信息,请参阅 使用渐变维度向导配置输出

设置数据流组件的属性