标签: scd2

SCD 类型 2 的 SQL 查询

我得到了下表,其中存在以下问题:

从数据集创建缓慢变化的维度类型 2。EMPLOYEE 表记录了每个员工的日常记录。类型 2 - 将具有有效数据和到期日期。

员工ID 日期 姓名 经理ID
123 3 月 1 日 约翰·史密斯 1
123 3月2日 约翰·史密斯 1
123 3月3日 约翰·史密斯 2
123 3 月 4 日 约翰·史密斯 3
123 3月5日 约翰·史密斯 3

我相信我的目标表应该如下所示:

员工ID 姓名 经理ID 生效日期 截止日期
123 约翰·史密斯 1 3 月 1 日 3月3日
123 约翰·史密斯 2 3月3日 3 月 4 日
123 约翰·史密斯 3 3 月 4 日 无效的

我尝试了以下查询:

SELECT employee_id, name, manager_id,
CASE
    WHEN LAG(manager_id) OVER() != manager_id THEN e.date …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server scd2 scd

6
推荐指数
1
解决办法
3万
查看次数

SCD2 +合并语句+ SQL Server

我正在尝试使用MERGE语句来插入/更新SCD2类型的维度表

我的源是一个Table var to Merge with Dimension表.

我的MERGE语句抛出一个错误:

当FROM子句包含嵌套的INSERT,UPDATE,DELETE或MERGE语句时,INSERT语句的目标表'DM.DATA_ERROR.ERROR_DIMENSION'不能位于(主键,外键)关系的任何一侧.找到参考约束'FK_ERROR_DIMENSION_to_AUDIT_CreatedBy'.

我的MERGE声明:

DECLARE @DATAERROROBJECT AS [ERROR_DIMENSION]

INSERT INTO DM.DATA_ERROR.ERROR_DIMENSION
SELECT  ERROR_CODE,
    DATA_STREAM_ID,
    [ERROR_SEVERITY],
    DATA_QUALITY_RATING,
    ERROR_LONG_DESCRIPTION,
    ERROR_DESCRIPTION,
    VALIDATION_RULE,
    ERROR_TYPE,
    ERROR_CLASS,
    VALID_FROM,
    VALID_TO,
    CURR_FLAG,
    CREATED_BY_AUDIT_SK,
    UPDATED_BY_AUDIT_SK

FROM (MERGE DM.DATA_ERROR.ERROR_DIMENSION ED USING @DATAERROROBJECT OBJ
     ON(ED.ERROR_CODE = OBJ.ERROR_CODE AND ED.DATA_STREAM_ID = OBJ.DATA_STREAM_ID)     WHEN NOT MATCHED THEN    INSERT VALUES(
         OBJ.ERROR_CODE
        ,OBJ.DATA_STREAM_ID
        ,OBJ.[ERROR_SEVERITY]
        ,OBJ.DATA_QUALITY_RATING
        ,OBJ.ERROR_LONG_DESCRIPTION
        ,OBJ.ERROR_DESCRIPTION
        ,OBJ.VALIDATION_RULE
        ,OBJ.ERROR_TYPE
        ,OBJ.ERROR_CLASS
        ,GETDATE()
        ,'9999-12-13'
        ,'Y'
        ,1
        ,1
        ) WHEN MATCHED AND ED.CURR_FLAG = 'Y'
             AND (      ED.[ERROR_SEVERITY] <> OBJ.[ERROR_SEVERITY]
                   OR   ED.[DATA_QUALITY_RATING] …
Run Code Online (Sandbox Code Playgroud)

sql-server merge scd2

1
推荐指数
1
解决办法
4441
查看次数

使用SCD1和SCD2属性+ SSIS加载混合维度表

我正处于开始新任务的过程中,其中我需要加载带有SCD1和SCD2的混合维度表.这需要作为SSIS包实现.如果我使用SCD组件或有其他方法,有人可以指导在SSIS中处理此问题的最佳方法吗?有什么最好的做法.

对于SCD2类型,我使用Merge语句.

谢谢

ssis scd2

0
推荐指数
1
解决办法
1711
查看次数

标签 统计

scd2 ×3

sql-server ×2

merge ×1

scd ×1

sql ×1

ssis ×1

t-sql ×1