kettle - 维度查询/更新控件在 KettlePentaho Data Integration里“维度查询/更新”控件绝对是数据仓库建设中的“明星级”选手。它的核心使命只有一个专门用来处理“缓慢变化维”SCDSlowly Changing Dimensions。通俗点说当你的业务数据比如客户地址、员工职位随着时间发生变化时这个控件能决定你是直接覆盖旧数据只要最新状态还是保留历史轨迹记录它是怎么一步步变成这样的。1、“维度查询/更新”控件如下图选中 “更新维度吗”进行相关应的配置就能保留历史轨迹记录它是怎么一步步变成这样的。举例如下图进行相关配置重点配置标出来的几个关键点a选中 “更新维度吗”b) 在“关键字”界面上设置要用哪一个字段做为键在目标维表和流数据的字段进行查找匹配c) 保留历史轨迹, 涉及配置下图蓝色标示的几个字段。stream日期字段 若原来的维表就有记录了现在有更新的记录要插入进去那么这字段的值将会用于更新原维表记录中“截止日期字段”的值另外这值也会作为更新记录的新插入的记录的“开始日期字段”值。version字段这版本号字段对应的值会变插入会自动增加1d) 在“字段”界面上设置目标维表字段跟流数据的字段的映射及进行哪样的操作在”更新的维度的类型“ 在下拉列表中选择相应的操作e) 配置完成后运行这转换查看结果。如修改sakila库表sakila.customer 中记录的邮箱后运行这load_dim_customer.ktr 测试增量抽取数据更新表记录情况。-- 1.sakila库-- 修改表sakila.customer 中下面记录的邮箱测试增量抽取数据更新表记录情况updatesakila.customersetemailLUCY.WHEELER163.comwherecustomer_id208;-- 2、sakila_dwh库 运行前后数据检查对比--a)执行前表中只有一条记录其中版本号有效开始日期和有效结束日期 (对应字段customer_version_numbercustomer_valid_fromcustomer_valid_through-- b)执行这程序后预期有2记录有不同版本号有效开始日期和有效结束日期 有变化 如下selectdc.customer_key,customer_id,customer_email,customer_version_number,customer_valid_from,customer_valid_through,dc.*fromsakila_dwh.dim_customer dcwherecustomer_id208;执行这程序后数据库维记录的结果 如下图 customer_id 208 预期有2记录有不同版本号有效开始日期和有效结束日期 有变化 2、“维度查询/更新”控件如下图没选中 “更新维度吗” 这就设置查询的功能如下国其中绿色标示的一些字段如”代表关键字段“、” version字段“只适用于选中 “更新维度吗”才有效。