在SSIS中无法选择变量设置SCD Type 2日期值的求助
SSIS中SCD Type2维度日期列变量配置方案
针对你在SSIS里创建SCD Type2维度时无法选择变量设置日期的问题,需要通过以下步骤配置:
1. 创建并配置SSIS变量
- 在包的变量窗口中,创建
DateTime类型的变量(比如@CurrentDateTime,用于赋值给新记录的开始日期和旧记录的结束日期)。 - 可通过两种方式赋值:
- 直接给变量设置表达式:勾选变量的"表达式"选项,输入
GETDATE()(或你需要的自定义日期逻辑); - 用执行SQL任务:在包启动时执行查询获取目标日期,将结果赋值给变量。
- 直接给变量设置表达式:勾选变量的"表达式"选项,输入
2. 用派生列转换预处理日期值(推荐)
因为SCD组件默认仅支持系统函数赋值,直接选变量会受限,建议在数据源与SCD组件之间插入派生列转换:
- 派生新列
DimStartDate,表达式选择@[User::CurrentDateTime]; - 派生新列
DimEndDate,表达式选择@[User::CurrentDateTime](旧记录的结束日期会在SCD组件中更新,这里可先占位); - 将派生后的列传入SCD组件,后续直接使用这些列即可。
3. 配置SCD组件的Type2规则
打开Slowly Changing Dimension转换编辑器:
- 维度键页面:设置数据源与目标维度表的主键关联;
- 变化属性页面:勾选需要跟踪变化的字段;
- 历史属性页面:选中目标表的结束日期列,操作选择**"更新为特定值"**,点击表达式按钮,选择你创建的变量
@[User::CurrentDateTime]; - 固定属性页面:选中目标表的开始日期列,设置其值为之前派生的
DimStartDate(或直接通过表达式选择变量)。
注意事项
- 确保变量的作用域是当前包或数据流任务,避免因作用域不对导致变量无法被SCD组件识别;
- 如果需要区分开始/结束日期的不同变量,可创建两个独立的
DateTime变量分别赋值。
内容的提问来源于stack exchange,提问作者jithmi97
相关产品推荐
相关产品推荐

