问题标签 [scd2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
etl - 哪个是维度的最佳方法(SCD-2 或 SCD-1 + 全新维度)
假设我有以下情况:
具有一些非易变属性的维度产品(描述和直径 - 它们只能通过 SCD-1 更改进行更改以进行更正)和一个可能易变的属性(销售组,同一产品可能随时间而变化)。
因此,当一种产品的这些易变属性发生变化时,我需要以某种方式跟踪它们。
我有这两种方法:
对于两者:继续将 SCD-1 用于非易失性属性。
方法 #1:在 product_dim 中使用 SCD-2 仅用于易失属性。
方法二:让销售组成为一个全新的维度,每次销售都将跟踪 ETL 时刻的当前价值。这里不需要 SCD-2。
我是数据仓库的新手,我试图了解哪个更好以及为什么。我的目标之一是使用 OLAP 软件来阅读所有这些内容。
sql - Postgres 索引
我是 Postgres 的新手。
我们使用 Postgres 在我们的项目中实现了 SCD type-2。输入文件是一个完整的刷新文件,每天大约有 3000 万条记录。
帐号是关键列。
新记录的大约数量为 20K/天。如果源中缺少记录,则该记录将在目标中以结束日期关闭。关闭的大约记录数 - 10k/天
查询的运行时间正在稳步增加。索引是否有助于加快进程?
对要使用的索引有什么建议吗?
sql-server - MERGE 多次尝试更新或删除同一行
我正在尝试使用从以下网站获得的合并语句加载标准 Kimball SCD2 Dimension: http ://www.kimballgroup.com/2008/11/design-tip-107-using-the-sql-merge -声明用于缓慢变化的维度处理/
除了处理新实体之外,此合并语句是相同的。这将作为数据流中的直接插入处理。此问题仅涉及同一业务密钥的多个版本。
当我执行合并语句时,SQL 返回错误:
消息 8672,级别 16,状态 1,第 3 行
MERGE 语句多次尝试更新或删除同一行。当目标行匹配多个源行时会发生这种情况。
MERGE 语句不能多次 UPDATE/DELETE 目标表的同一行。优化 ON 子句以确保目标行最多匹配一个源行,或使用 GROUP BY 子句对源行进行分组。
我正在使用 SQL Server 2012:
源数据集
目标数据集
这是我所期望的:
您可以在下面找到重现问题的脚本:
你能帮我解决这个问题吗?
ssas - SSAS & SCD2 - 如何处理 Dim 中的 IsActive 行
我正在使用 SQL Server 2014 和 Visual Studio 2015。
例如,我有一个 SCD2 用于员工姓名
在事实表中
因此,您可以看到多维数据集当前链接在 FctAgentSK 和 DimSK 上。这按计划工作。但是,当 Jo 更改性别时,SCD2 使该行处于非活动状态 (0) 并插入一个具有新性别和 IsActive 为“1”的新行。
我面临的问题是事实SK 101 仍然引用代理的“旧”详细信息。我应该如何处理这个问题才能仍然报告电话,但也参考代理的“正确”详细信息 - 反映他们当前的性别。
当插入一个新事实时,它将分配“新”SK,但基本上我需要报告发生在性别变化两侧的所有呼叫。
请问有什么建议吗?
谢谢你。
oracle - SCD2 一次性合并违反 Oracle 12 中的主键
一段时间后,我发现恕我直言,一次性合并语句可以非常快速地记录缓慢变化的维度类型 2。
它在没有唯一约束的表上完美运行。
大多数情况下,它也适用于具有唯一约束的表。但有时(通常当历史变化较大时)我收到错误 ORA-00001,违反唯一约束。当然,我知道有两遍方法有效,但它们速度较慢。
我唯一的猜测是,Oracle 有时会在 UPDATE 之前执行 INSERT,这会暂时复制 TH_Valid_To_Date。
任何想法如何避免它(同时保持主键)?
源表:
历史表:
合并:
sql-server - SQL Server - 如何在两个以上条件下使用 Merge 语句进行缓慢变化的维度?
我正在尝试通过 T-SQL 实现缓慢变化的维度类型 2,但我不知道如何使请求生效。
表格列:cpf
, nome
, telefone_update
,endereco_insert
基本上逻辑是:如果使用MATCH
没有发生cpf
,则必须插入记录;如果MATCH
发生了但只有telefone_update
字段发生了变化,则不需要另一条记录,我只想更新并覆盖这些值;如果MATCH
发生这种情况但只有endereco_insert
字段发生了变化,我想添加一条新记录并更新开始日期和结束日期。
到目前为止,我所拥有的是:
但我认为放置另一个WHEN MATCH AND ...
不会使这项工作。
有什么建议么?
提前致谢!
talend - 在 Talend 中使用 SCD 组件的最佳实践
我正在使用 tPostgresqlSCD。性能真的很慢。它每秒插入 1 行甚至更慢。有没有办法提高它的性能?我尝试了“使用内存节省模式”。这使它变得更慢。我在 500 万行维度中插入大约 9000 行。我什至还有更大的尺寸。它如何扩展?
sql-server - SCD 在 BIDS 2016 SSIS 中
我正在尝试使用 SCD 转换来实现 2 型 SCD。当我更新源中的某些内容时,SCD 转换不是单独更新该行,而是更新并插入所有行。
例如,在第一次运行后,源有 50 行,目标有相同的 50 行。现在我更新了源中的第 1 行并运行了包,然后再次插入所有行,而不是更新那一行。
知道为什么吗?
ssis - 使用 SCD 类型 2 的 SSIS 校验和转换
在 SSISSCD Type 2
转换中,我们可以保留旧的历史数据。
我们如何使用校验和转换来保存历史数据?
sql-server - SSIS SCD 转换开始日期和结束日期相同 - 这怎么可能?
我的 ETL 有问题。我有一个维度表,其中包含一些 SCD 1 和 SCD 2 列 - 我已在 SCD 转换中分别正确映射这些Changing Attribute
列Historical Attribute
。
然后在“历史属性选项”页面上,我检查了Use start and end dates to identify current and expired records
,将我的 ValidFrom 列输入为 ,Start date column
并将我的 ValidTo 列输入为End date column
。
据我了解,这应该意味着任何插入的记录都会被赋予当前日期时间值的 ValidFrom ,并且它们的 ValidTo 列保持不变NULL
。对于那些已经存在但已经过时的记录,他们的 ValidTo 成为当前的日期时间值。
但是,在某些但不是所有导入的记录上 - 插入的最新记录在 ValidFrom 和 ValidTo 记录中以完全相同的日期时间插入。这成为一个巨大的痛苦,因为我不得不在我的查询中将该记录视为无效,以及对事实表加载的连锁反应。
任何人都可以帮助解释为什么会这样吗?