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

如何识别缓慢变化维度(Type 2)表中的无效记录?

修复缓慢变化维度(Type 2)中缺失终结日期的记录

原始错误数据

iddimidpersonnameroleIsActivestartend
11234jimdriver12022-01-012022-02-03
21234jimdriver02022-02-039999-12-31
33456tomaccountant12022-01-012022-08-30
44567pattyassistant12022-01-019999-12-31

目标修正后数据

iddimidpersonnameroleIsActivestartend
11234jimdriver12022-01-012022-02-03
21234jimdriver02022-02-049999-12-31
33456tomaccountant12022-01-012022-08-30
44567pattyassistant12022-01-019999-12-31
53456tomaccountant02022-08-319999-12-31

识别缺失终结日期的idperson

使用以下SQL查询找出所有没有end = '9999-12-31'记录的idperson:

SELECT idperson, name, role
FROM your_dim_table
GROUP BY idperson, name, role
HAVING MAX(end) <> '9999-12-31';

若需要同时获取该用户最新维度记录的结束日期,可使用:

WITH latest_records AS (
    SELECT 
        idperson, 
        name, 
        role, 
        MAX(end) AS latest_end_date
    FROM your_dim_table
    GROUP BY idperson, name, role
    HAVING MAX(end) <> '9999-12-31'
)
SELECT * FROM latest_records;

手动修正步骤

  1. 对查询出的每个idperson,插入一条终结记录,确保新记录的start为原最新记录end的次日,IsActive设为0,end设为9999-12-31:
    以Tom(idperson=3456)为例:
INSERT INTO your_dim_table (idperson, name, role, IsActive, start, end)
VALUES (3456, 'tom', 'accountant', 0, '2022-08-31', '9999-12-31');
  1. 若原最新记录的IsActive仍为1(不符合Type2维度规则),同步更新该字段:
UPDATE your_dim_table
SET IsActive = 0
WHERE iddim = 3;

内容的提问来源于stack exchange,提问作者Andres Mora

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 17:01:35