问题标签 [scd]
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.
mysql - 在 MySQL 中查询 SCD 类型 2 表
想象一下下表:
根据作为参数发送的日期,我想知道是否有任何方法可以构建返回正确类型的视图。例如:
SELECT Type WHERE date_to_analyse = '21/06/2010'
应该返回 'Retail'
SELECT Type WHERE date_to_analyse = '18/06/2012
' 应该返回 'Corp'
Date_to_analysis 不是表的列,我想避免使用存储过程。
我的想法是使查询“干净”,而不是使用以下查询
这甚至可能吗?
谢谢
ssis - BIML SCD 组件
在 SSIS 中,我们有基本的 SCD 组件来刷新维度表。我希望通过 BIML 使用它,但该组件似乎不存在...... BIML 中有没有办法刷新 Dim ?
提前致谢
sql-server - 获取表格中的所有有效时间片
我有一个表,其中的条目使用 SCD 2 进行历史记录现在我正在寻找一种可能性来获得同时有效的 Alle PK:
例如我的表看起来像这样:
选择应该给我两个粗体行
感谢您的帮助
sql - 更新 SCD2 表中的记录
我有一个表,其中的条目使用 SCD 2 进行历史记录,该表如下所示:
标有箭头的记录不正确 此记录将通过更新更正。所以在更新记录之后看起来像这样:(下一条记录中的 ValidTo = ValidFrom -1)
如果有多个不正确的记录,也必须通过更新来更正这些记录 ValidFrom 是正确的并且不必进行调整
有人可以帮帮我吗?谢谢
sql-server - SCD 在 BIDS 2016 SSIS 中
我正在尝试使用 SCD 转换来实现 2 型 SCD。当我更新源中的某些内容时,SCD 转换不是单独更新该行,而是更新并插入所有行。
例如,在第一次运行后,源有 50 行,目标有相同的 50 行。现在我更新了源中的第 1 行并运行了包,然后再次插入所有行,而不是更新那一行。
知道为什么吗?
sql-server - SQL Server SCD II 实施困境
我有一个包含 80 个字段以北的患者表,其中我需要保留所有字段的历史数据。为澄清起见,并非所有字段都“需要”版本控制,尽管决定简单地保留旧记录的完整副本。
为澄清起见,这是针对 ETL 流程,该流程将在非工作时间进行。
这里似乎有一些方法,虽然我不知道哪种方法最适合我,因为我以前没有这样做过。
选项 1:将 SSIS 用于 SCD 实施。
优点:由于我们无论如何都在使用 SSIS 来获取数据,所以继续使用相同的工具是有意义的
缺点:我已经阅读了一些关于 SSIS 中 SCD 性能的文章 - 例如:https ://chrisjarrintaylor.co .uk/2012/07/03/ssis-scd-vs-merge-statement-performance-comparison/
选项 2:MERGE
在 tsql 语句中使用。
优点:编写简短,易于理解 - 一个步骤完成所有步骤 缺点
:如果我们尝试在 80 多个字段上编写条件,可能会很麻烦。我们也可能OR
在这么多字段上执行性能问题(如在,如果有的话)
下面的方法对我有用,虽然这样写,但意味着一个很长的合并语句:需要帮助理解 scd 的替代方案在SSIS
选项 3:INSERT
所有新记录,使用 CTE 清理重复项(那些没有更改的记录),UPDATE
停用那些更改的记录的声明
Pro:没有杂乱OR
的声明,不太难写或理解 - 性能不会似乎这将是一个问题(我们过去使用过 CTE 方法)
Con:不知何故,这是一种非常笨拙的方法
考虑到这些方法或您可能拥有的其他方法,是否有一种更易于维护、扩展性更好的方法?
小数据样本 - 源数据中有 80 多列(我无法控制)和更多行:http ://rextester.com/live/AYQUT28070
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 记录中以完全相同的日期时间插入。这成为一个巨大的痛苦,因为我不得不在我的查询中将该记录视为无效,以及对事实表加载的连锁反应。
任何人都可以帮助解释为什么会这样吗?
sql - SCD 类型 2 结束日期问题
我正在努力录制缓慢变化的维度 (SCD)。我有一个日常 ETL 作业,根据更改注册记录版本。
问题是我得到的结束日期大于当前版本的开始日期。我应该看到的是,非当前记录的结束日期至少是当前记录开始日期的前一天。
我知道造成这种情况的是 ETL 工作。出于某种原因,它将非当前记录 EndDate 更新为今天的日期。一旦记录是非当前的,它就不应该再次更改它的 EndDate。
有人可以指出我在代码中做错了什么吗?
这是我认为问题所在,但我不知道如何解决它:
sql-server - 删除重复间隔/历史重复
为该问题设置正确的标题有点挑战,因此我将尝试解释该问题。我们使用JCC进行Oracle --> SQL Server复制。它的工作方式是读取 Oracle 中的事务日志,然后在每次更改时发送 2 个语句:INSERT + UPDATE。因此,如果没有这样的记录,如果SQL Server中的记录已经存在,它将被插入,所以第一次INSERT将因为PK冲突而失败,然后它会尝试UPDATE记录。
现在我们正在尝试使用SQL Server 时态表进行历史跟踪。当JCC(复制)失败时问题就开始了,因为我们需要重新播放日志。例如,复制在上午 11:01 失败。为了确保我们不会错过任何记录,我们需要重播,例如从上午 10:45 开始。它适用于普通表,但是当我们处理临时表时,它只会使历史变得错误并且历史变得不准确。
所以,现在的问题。如何识别这些记录并清理它们?
data-warehouse - 数据仓库:多值渐变维度
我目前正在为拉丁美洲的(咖啡)聚合器创建一个数据仓库。他们有两个主要业务:
- 从农民那里购买咖啡并在国际市场上销售
- 向这些农民提供小额信贷以增加他们的产量。
我的计划是在他们的操作系统/数据库之上创建一个数据仓库。
我将整合的第一个业务流程是信用操作,然后我将添加个体农民的咖啡购买。
对于信贷操作,我设想一个单一的事实表,其中包含贷款金额、农民、贷款官员等维度。但在进入有关贷款的事实表之前,我目前正在创建农民维度。
我有一个不错的小农民维度,有一些钥匙、地理位置、性别、教育等
我还想包括农民的“经济生产”。这是在贷款申请过程中捕获的信息,基本上说明了他们生产什么样的咖啡以及他们生产咖啡的土地面积。因此,农民与经济生产之间的关系为 1:n
此外,这种情况每年都在变化,显然只有完成贷款申请的农民才知道。
此信息的目标是能够(甚至在创建信用事实表之前)创建一些关于农民、他们的空间分布和他们的经济活动/产出的基本数据/见解。
因此,我正在考虑将农民维度与“生产维度”相关联。该生产维度将是 (1) 时变的和 (2) 多值的。我计划根据类型 2(valid_from、valid_to 和 current_valid 列)实现的时间差异。
由于我对整个数据仓库场景相当陌生,因此我一直在阅读很多关于常用技术和原则的内容,主要来自 Kimball 的优秀(!)书。但是,我还没有遇到任何描述这种维度 - 维度连接的东西。
因此,我的问题是:
- 这是常见的并被认为是一种好方法吗?
- 我在哪里可以找到有关此问题的最佳实践的一些信息
编辑:我正在考虑的第二种可能性是创建某种处理“客户交互”的无事实事实表(例如,收集来自农民的此类信息的贷款申请流程)。然后,该事实表将具有对农民的 FK、对生产维度的 FK 以及对时间维度表的 FK。由于它没有与之相关的事实,这只会形成某种 1:n 链接表。与前一种方法的唯一区别是时间维度现在在一个单独的表中,而不是在我看来包含在生产表中。
EDIT2:或者我应该创建一个生产事实表,尽管它与聚合器的业务流程不一致。在那种情况下,生产某种作物的表面积可能会成为衡量标准,并且作物类型/品种等可能会进入一个单独的维度。