问题标签 [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.

0 投票
1 回答
296 浏览

mfc - 如何在 mfc 应用程序中读取 .scd 数据文件

我刚刚使用 pendrive 中的注册密钥从 3 Cds 购买并安装了一个应用程序。安装后,我得到了一个 MFC 应用程序 (.exe)。当我查看这些文件时,我发现了一个数据文件夹,其中我发现了许多 .scd 文件。数据可在应用程序内访问。

现在我想提取该 scd 文件并单独单独需要这些数据。

我尝试使用 FileViewPro、Scribus 和许多 exe 阅读器软件,但没有成功。

请有人帮我阅读 .scd 文件以从中提取数据。

提前致谢,

0 投票
1 回答
2151 浏览

mysql - 在 sql 中执行 SCD 的通用过程

我在 mssql 服务器中有 2 个表。我可以通过自定义插入/更新/删除以及 Merge 语句执行 scd。

我想知道是否有任何通用程序可以达到目的。我们只传给它 2 个表,它应该能支持 SCD。SQL Server 2008 中的任何选项?谢谢

0 投票
1 回答
363 浏览

sql - 缓慢变化的维度总是在更新

我有一个要加载的维度,其中有description一个数据类型为VARCHAR(50). 它的排序规则是 SQL_Latin1_General_CP1256_CS_AS,它包含诸如“مركز العقبة”之类的阿拉伯数据。它的来源具有相同的类型、大小和排序规则,但每次我加载维度时,该字段都会更新!为什么会这样?

0 投票
1 回答
3940 浏览

sql - 渐变维度——什么是纯类型 6 实现

我试图从WIKI中理解纯 6 型 SCD 实现,它主要说三点

  1. 如果维度可能发生变化,则每个时间片都有一个类型 2 代理键可能会导致问题。
  2. 纯粹的 Type 6 实现不使用这个,而是为每个主数据项使用一个代理键(例如,每个唯一的供应商都有一个代理键)。
  3. 这样可以避免主数据中的任何更改对现有交易数据产生影响。

但是我无法清楚地想象这些问题。

0 投票
2 回答
153 浏览

ssis - 按日期拆分数据

我正在为 HRIS 项目导入一个 .CSV 文件,该文件将报告新员工和离职。我有一份显示以下日期的报告。

我想拆分日期,以便拥有 Term 日期的人进入一个数据库,而拥有 NewHire 日期的人进入另一个数据库。

我认为有条件的拆分是答案,但它似乎不想工作。我的条件是这样设置的:

我也想过一个缓慢变化的维度。创建一个包含所有员工信息的员工表,该表将引用雇佣/解雇报告中的信息,并将任期日期添加到出现任期日期的任何员工(使用员工编号作为关系)。

欢迎任何关于我应该如何发展的想法。

0 投票
1 回答
2825 浏览

mysql - 如何在行版本化 MySQL 表(SCD 类型 2)中设置主键、自增和索引?

对于一个项目,我需要在 MySQL 数据库中实现行版本控制。在阅读了可能的解决方案后,我选择使用一个表并添加一个start_dateend_date列,指定该版本/行何时处于活动状态。

对于行的多个版本,该id列将是相同的。因此它在表中不再是唯一的。现在我不确定如何设置主键(和其他索引),同时保持id列的自动增量活动。

我看到两个选项。第一个id只是创建一个索引,如下所示:

另一个是制作idstart_date主键,像这样:

最好的选择是什么,尤其是在考虑性能时?


例如,数据将如下所示:

在这种情况下,我添加了“Jonathn”,但后来将其更改为“Jonathan”(同时保持相同的 ID)。稍后添加另一行(“James”)。

0 投票
0 回答
45 浏览

mysql - MySQL中的文本修正

目前我正在开发一个应该支持文本修订的 cms。因为有时我倾向于将我认为我在这里要求改进和建议的事情过于复杂化。

我有以下 4 个表:

文章

article_revision

标签

article_revision_has_tag

所以article是文章一般信息的持有者。一个article可以有一个或多个article_revisions。所有分配的标签都参考article_revision. 这样我就可以跟踪更改的标签。

但我不太确定的最后一件事是:如何创建像在 stackoverflow 中实现的历史记录?例如,随着时间的推移,三个不同的用户更改了文本,最后作者回滚到第一个版本。数据库表将如何跟踪这一点?

我想过这样的事情:

article_revision_history

有了这个,我引用了article,article_revision和一个可选user表。如果我使用ORDER BY createdAt DESC我会得到修订历史。从最新的开始。

这是修订历史的最佳方式吗?如果不是最好的方法是什么?

如果我们假设这将是一个软件解决方案,它可能在一天内将超过 100 篇文章添加到数据库中(有多个修订版),那么完整的历史跟踪是否可以维护?你有什么经验?

提前致谢!

0 投票
1 回答
578 浏览

data-warehouse - 具有随时间合并的实体的 II 型 SCD

假设我们有一个代表销售办事处的维度。办公室可能会搬迁,这将是第二类变化。我们希望跟踪在旧办公地点发生的操作,以及现在在新办公地点发生的操作,并了解更改发生的时间。到目前为止,只是标准的 II 型设计。现在假设一个办公室与另一个办公室合并。也就是说,两个原本不同的办公室(“上级办公室”)的业务活动现在在一个办公室(“合并的办公室”)中进行,这可能是其中任何一个办公室的延续(物理上或人员方面)原来的办公室,或者它可能是一个新的办公室,从商业的角度来看,它是前两个办公室的延续。

报告/分析要求如下:

  • 我们希望能够看到新合并办公室的所有当前活动。
  • 我们希望能够看到合并后的办公室或上级办公室曾经做过的所有活动。
  • 我们希望能够看到随着时间的推移在合并之前和之后在一个母公司中发生的活动,而不会看到另一个母公司的活动(至少在合并之前)。

我不确定如何使用任何 SCD 类型对此进行建模。如果我们简单地将两个父办公室条目替换为一个新条目,并相应地更新所有事实表,我们就有了一个类型 I 更改。这使我们可以很好地查看当前活动,但我们会丢失历史记录。如果我们将记录分开,我们就不会知道合并。如果我们添加第三条记录来表示合并后的办公室,我们也会丢失历史记录(它会有哪个自然键?父办公室的自然键都不合适)。

我需要使用桥接/多对多表吗?这引入了我想避免的复杂性。但是,如果这是最好的方法,那就这样吧。但是,我仍然不确定这将如何构建。也许事实表将指向一个办公室条目,并且办公室将以多对多的方式分组。报告将基于组进行,而不是直接在办公室维度上进行。

ElectricLlama 问题的答案

  • 大多数用户交互是通过预制报告进行的,因此底层结构的任何复杂性都将被隐藏起来。
  • 一些用户确实使用 SQL 或 SAS 来获取数据。目前,他们不太可能关心这个特定问题,但随着我们让更多用户使用这些工具,这种情况可能会发生变化。
  • 目前我们没有查询作者。
  • 我不认为会有多层次的合并,但我不能肯定地说不。不过,如果有的话,我会感到惊讶。
  • 我不知道如何让最终用户轻松完成这种事情,这可能足以放松一些要求。
0 投票
3 回答
1796 浏览

sql - 数据仓库 - 具有多对多关系的缓慢变化维度

例如,假设我有一个包含两个维度和一个度量的事实表

FactMoney 表


ProjectKey int

PersonKey int

现金金额


这两个维度的定义如下:

DimProject(类型 0 维度 - 即静态)


ProjectKey int

项目名称 varchar(50)


DimPerson(第 2 类缓变维度)


PersonKey int

PersonNaturalKey int

人名 varchar(50)

EffectiveStartDate 日期时间

EffectiveEndDate 日期时间

IsCurrent 位


到目前为止非常简单。现在我将介绍一个人员类别的概念。

昏暗类别


CategoryKey int

类别名称 varchar(50)


并在 DimPerson 和 DimCategory 之间建立 M2M 关系

桥人类别


PersonKey int

CategoryKey int


所以 - 人们可以有 1..n 个类别。

我的问题是 - 由于 Person 是一个缓慢变化的维度,当一个人的名字发生变化时,我们会添加一个新的人行并更新我们的生效日期和当前标志,没什么大不了的。

但是我们如何处理这个人的类别呢?每次弹出新的人员版本时,我们是否需要向桥接表添加更多行?

作为推论,如果一个人的类别发生变化,这是否意味着我们需要在 person 表中创建一个新行?

0 投票
3 回答
1849 浏览

ssis - 渐变维度中的 System::CreationDate 是否与创建 ssis 包的日期有关?

我创建了一个由连接到 SCD 的 OLE DB 源组成的 SSIS 包。在 SCD 中,我勾选了我选择的“使用开始日期和结束日期来识别当前和过期记录”的单选按钮

开始日期列:RecordStartDate 结束日期列:RecordEndDate

设置日期值的变量:System::CreationDate

如果我今天(2013 年 11 月 5 日)运行 ETL,并在运行 ETL 后检查目标表。RecordStartDate 使用我创建 SSIS 包的日期(2013 年 10 月 18 日)。包不应该使用 ETL 运行的日期吗?如我错了请纠正我。