You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSIS中不改动数仓设计时基于双列业务键查找代理键方法

数仓复合业务键Lookup代理键实现需求

项目背景

当前正在开展数据仓库项目,所有开发工作需严格遵循既定设计规范,相关设计、源表结构如下:

  • 数仓部分设计参考:数仓设计示意图
  • 源表结构参考:源表结构示意图

源表字段唯一性规则:entity字段本身不具备唯一性,仅当与COMMITTEE_TITLE字段组合时,可作为唯一记录标识。

核心待解决问题

按照数仓建设最佳实践,Lookup组件为推荐实现方案,需要通过合规的业务键从DIM_COMMITTE维度表查找代理键COMMITTEE_SRGT,关联后写入FACT_COMMITTEE事实表。

原有方案及驳回原因

此前的实现方案为:在staging层ETL流程中拼接entity、COMMITTEE_TITLE两个字段生成COMMITTE_BKEY字段,分别在staging层的事实预加载表、维度预加载表中新增该字段,基于该拼接字段即可直接完成Lookup关联。
两张staging表的建表脚本如下:

staging层ETL事实预加载表结构

CREATE TABLE [dbo].[STG_STR_COMMITTEES_MEETINGS](
[COMMITTE_BKEY] [nvarchar](520) NULL,
[ENTITY] [nvarchar](255) NULL,
[COMMITTEE_TITLE] [nvarchar](255) NULL,
[NUMBER_MEETING_CONDUCTED] [int] NULL,
[NUMBRER_MEETING_ATTENDED_BY_MEMBER] [int] NULL
)

staging层ETL维度预加载表结构

CREATE TABLE [dbo].[STG_STR_COMMITTEES](
[COMMITTE_BKEY] [nvarchar](520) NULL,
[ENTITY] [nvarchar](255) NULL,
[COMMITTEE_TITLE] [nvarchar](255) NULL,
[MEMBERSHIP_STATUS] [nvarchar](20) NULL,
[START_DATE] [date] NULL,
[END_DATE] [date] NULL,
[MEMBERS_NAMES] [nvarchar](255) NULL
)

该方案虽可简化Lookup操作,但因修改了维度表原有设计未被采纳。

方案诉求

需要在不改动数据仓库现有表设计的前提下,组合两列生成复合键,完成从维度表到事实表的代理键Lookup映射。
当前已编写的关联查询语句如下:

SELECT ISNULL(COMMITTEE_SRGT, 0) AS COMMITTEE_SRGT,
cm.ENTITY, NUMBER_MEETING_CONDUCTED, 
NUMBRER_MEETING_ATTENDED_BY_SAAC_MEMBER
FROM [dbo].[STG_STR_COMMITTEES_MEETINGS] cm
 LEFT JOIN [dbo].[STG_STR_COMMITTEES] c 
      ON cm.ENTITY = c.ENTITY
      AND cm.COMMITTEE_TITLE = c.COMMITTEE_TITLE

内容的提问来源于stack exchange,提问作者Guissous Allaeddine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 04:24:17