不同色谱柱的不同 SCD 类型
Posted
技术标签:
【中文标题】不同色谱柱的不同 SCD 类型【英文标题】:Different SCD types for different columns 【发布时间】:2020-08-31 18:19:01 【问题描述】:在单个维度上为不同的列设置不同的 SCD 类型是否有意义?还是将维度表拆分为两个表总是更好?
例如,操作系统向我发送以下数据:
ID | CHANNEL_CODE | NAME | TYPE
1 | A | X | 0
2 | B | Y | 1
其中CHANNEL_CODE
= 自然键,TYPE
应该是 SCD 类型 2,而 NAME
可能是 SCD 类型 1。假设NAME
经常更改。
【问题讨论】:
【参考方案1】:我总是将类型 0、1 和 2 放在一个表中。
我也同样对待 Type 0-s 和 Type 1-s,而 Type 2-s 则相反。
类型 1/0 更改会导致更新 SCD 表中的所有版本以获取相同的企业/自然 ID,以反映新信息。 类型 2 更改导致更新 SCD 表中的最新行以包含新更改日期作为有效截止日期,当前指示符包含 FALSE,以及包含新数据的新行,有效起始日期作为更改日期,有效期至 '9999-12-31'。使用这种类型的暂存数据:
CREATE TABLE stg_customer (
cust_id INT NOT NULL -- natural identifier
,cust_chg_dt DATE -- change date
,cust_first_name VARCHAR(30) -- type 1
,cust_last_name VARCHAR(30) -- type 1
,cust_phoneno VARCHAR(30) -- type 1
,cust_loyalty_lvl INT -- type 2
,cust_org_id INT -- type 2
) ;
...我的 SCD 表如下所示:
CREATE TABLE dim_customer_scd (
cust_key BIGINT
DEFAULT dim_customer_scd_seq.NEXTVAL NOT NULL -- surrogate key, primary key
, cust_id BIGINT NOT NULL -- natural identifier
, cust_from_dt DATE NOT NULL -- effective begin date
, cust_to_dt DATE NOT NULL -- effective end date
, cust_is_current BOOLEAN
DEFAULT(cust_to_dt='9999-12-31') NOT NULL -- current indicator
, cust_cre_ts TIMESTAMP(0) NOT NULL -- created timestamp
, cust_udt_ts TIMESTAMP(0) NOT NULL -- updated timestamp
, cust_first_name VARCHAR(30) -- Type 1 column
, cust_last_name VARCHAR(30) -- Type 1 column
, cust_phoneno VARCHAR(30) -- Type 1 column
, cust_loyalty_lvl INT -- Type 2 column
, cust_org_id INT -- Type 2 column
)
;
【讨论】:
【参考方案2】:IMO 的答案是否取决于...
如果您需要 Dimension 中字段的当前值和历史值,并且数据量 + 更改频率使其可行,则实施 SCD Type 7。
如果维度中少量字段的数据易变,而维度中的记录数很大,则实现SCD Type 4或SCD Type 5强>
【讨论】:
【参考方案3】:通常情况下,视情况而定。
首先,确保您了解 OLAP 模型和 RDBMS 存储之间的区别。 RDBMS 存储策略不必反映 OLAP 模型。
您可以轻松地将您的 SCD 类型拆分为单独的表,然后将它们连接到一个视图中以向 OLAP 模型呈现单个源。这允许底层表具有完全不同的 ETL 策略。
如果您的大多数列都是类型 2,则单独的表没有多大意义,因为收益不大。但是,如果您的大多数列不是类型 2,您可能会在 ETL 和处理任务中看到一些性能提升。在 OLAP 处理中,Skinner 表的读取和更新速度更快。
另外,如果您使用视图,我建议您研究使用左连接来组合表格。在许多 OLAP 负载处理模型中,负载处理一次查询单个属性。使用多个表作为左连接,查询处理器可以丢弃不需要提供结果的表引用,而不是通过内连接过滤数据。这可以提高整体 OLAP 处理速度。
【讨论】:
以上是关于不同色谱柱的不同 SCD 类型的主要内容,如果未能解决你的问题,请参考以下文章
高效液相色谱法HPLC和液质联用LC-MS在蛋白质/多肽混合物分析中的应用