问题标签 [fact-table]

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 投票
2 回答
178 浏览

sql-server - Foreign key referential integrity in the fact tables - T-SQL

I have this fact table:

I have a T-SQL Script to load data into my fact table:

How can I guarantee that I don't insert duplicate values in my fact table in order to not get referential integrity error?

I tried with the following statement after that query:

But I think that isn't the best approach for this...

Anyone have another alternative for this? Sorry but I can't put the real column and tables names...

Thanks!

0 投票
2 回答
239 浏览

database-design - 小尺寸和日期时间

我正在设计我的第一个 DWH 系统,并且遇到了一个我在任何书籍/文章中都没有找到的用例。

假设我有以下维度:

  • 学生
  • 主题

我有一个单一的事实表:

  • 等级

所谓的维度Student是我遇到的问题。它包含所有被认为是恒定且不可更新的基本信息列。但是,我有 4 列描述学生的当前居住地:地址、城镇、传真号码和国家/地区。这些很容易改变。

在我分析如何解决这个问题的过程中,我非常依赖 Kimball Group 的文章,我明白可以通过使用缓慢变化的维度类型 5来解决这个问题- 通过向维度添加一个迷你Student维度。

这一切对我来说都很有意义,然而,这是让我完全困惑的部分:我能够掌握的示例都没有DateTime在他们的小维度中。

如果我理解正确的话,我们需要能够随着时间的推移跟踪小维度记录的变化,所以记录一个简单的变化(没有 DT)不会削减它,对吧?

有人可以帮助我更好地理解这一点吗?从书上看,迷你维度可以包含 DT 吗?

PS我本来期望像Type 6这样的东西,但没有历史专栏。

0 投票
2 回答
1259 浏览

sql - 星型架构设计/最佳实践

我正在使用一个具有 4 个数据库的系统:

  • 账户(存储银行账户、交易等)
  • 客户(客户相关信息)
  • 信用(从第 3 方系统获取费率)
  • 质量(进一步内部计算)

我想创建 4 个事实表,每个数据库一个事实表......例如,我将有一个 Account Fact 表,其中 ClientAccount、Transaction、Provider 作为其维度表。我将为其他数据库提供 3 个类似的事实表。

我的问题是:在该数据库中包含每个相应的事实表是否有意义?即在帐户数据库中创建会计事实和维度表?还是为我们所有的星型模式创建一个新数据库,并将所有维度表和事实表包含在他们自己的数据库中更好?

0 投票
1 回答
36 浏览

sql - 改进 Facttable 和维度之间的 JOIN

我正在研究 SSMS 2012。

我创建了一个 Facttable 及其维度,两者都与 ParentID 关系连接。我创建了以更用户友好的方式显示 Facttable 和维度的视图(简单地取消透视)。当我使用 LEFT OUTER JOIN 从这些视图中获取信息时,一切都完美无缺。

事情是在我的某些维度上,我与我的 Facttable 有 n 对 1 的关系。例如,我在我的 Facttable 中存储了有关一家公司的一般信息,并将其股票的每日价值存储在维度中。

“问题”是当我对视图进行 LEFT OUTER JOIN 时,我在表的左侧部分有很多冗余信息(对应于公司的一般信息)。

给你一个想法:

我知道 NULL 的处理方式比“实际”值更有效。我们的想法是实现类似的目标。

在最好的情况下,这个想法对于来自 Facttable 和不同维度的多个“冗余”信息是可行的(如果同一公司每天存在不同的价格,相同的日期只会出现一次,然后将为 NULL)

这是我的想法,但请随时就此事发表您的意见。核心是真的要避免我的大的 1 对 n 关系,让我的电脑很难。

0 投票
1 回答
800 浏览

sql - 非规范化数据以适应星型模式

我正在研究将数据从 OLTP 移动到 OLAP 以帮助加快分析速度。我已经研究了我当前的问题 2 天了,但在任何地方都没有找到明确的答案。目前,我有一个高度规范化的关系模式,并且在将其转换为星型模式的事实表和维度表时,我无法弄清楚如何保留分层数据。有没有办法使事实表完全细化和规范化,同时保持从关系模式中获取的父表和子表的值?我不确定我问的是否正确,所以这里有一个例子:我正在记录钓鱼旅行的数据。我必须记录旅行和捕获的数据,因此我将这些数据存储到两个主表中(简化版本如下):

旅行(tripid,日期,装备数量,捕鱼时间,参与者)

捕获(三倍体,物种,性情,计数)

我将如何使用它创建一个事实表并保留渔具数量、捕鱼时间、参与者和物种计数,同时保持事实表规范化?我能想到制作事实表的唯一方法是:

事实(日期、物种、配置、渔具数量、捕捞小时数、参与者、计数)

日期、物种和处置是维度表的 FK,其余列是可量化的值。但是,这将被完全非规范化。这是执行此操作的适当方法,还是有另一种方法可以使父表和子表之间的关系具有可量化的值,并将其置于星型模式中?

0 投票
2 回答
3058 浏览

data-warehouse - 两个事实表之间的关系

根据数据仓库的概念,两个事实表之间存在关系(1-m 甚至 mm)是否正确?

Twetter 场景就是一个例子。我们可以假设我们有两个事实表(推文和用户)。如果我们想知道哪个用户发了推文或者推文是由某个用户发出的,我们必须加入这两个事实表。那么事实推文和事实用户之间是否存在(mm)关系?或者还有另一种方式来构建这个问题?

0 投票
0 回答
215 浏览

data-warehouse - 当相关类型 2 暗淡之一发生更改时,重新处理事实记录。事实表上的键怎么办?

在我们的每日 ETL 负载中,我们正在加载一年前的历史记录,并且该窗口每天都会更改为从 MAX(增量日期时间)值回溯一年。有时,事实数据中的记录是历史更新的,我们将获取该更改并重新处理。

此外,相关维度之一是类型 2 暗淡,并且经常发生变化。类型 2 维度记录的更改可能发生在我们最初提取事实数据和重新处理之间,从而导致该特定维度记录/自然键的新键,其中 IsCurrent = 1。

我们将来自集成层的事实数据合并到来自相关维度的代理键上的表示层。但是,由于发生了类型 2 更改,我们现在有一个用于相关暗淡的新键,我们的 MERGE 将其检测为新记录,而不是看到它已经存在。现在我们在事实表中有重复的记录。

我认为我们可以通过执行以下操作来解决此问题:

  • 将维度记录的自然键添加到事实表并更改 MERGE 以使用非类型 2 键和该表的自然键作为使其对 MERGE 唯一的原因。
  • 将事实 MERGE 上的 Type 2 键更改为 Type 0(本质上),如果它被检测为新记录但值永远不会更新,则将其插入其中。

这里可能还有其他选择,但这是我首先想到的处理这个问题的方法。我认为这是一个非常常见的用例,我只是想知道最佳实践方法是什么。理想情况下,我们不会重新处理一年前的事实数据,但这就是它的方式。

0 投票
3 回答
9229 浏览

sql - 连接两个具有共同维度的事实表

我得到了关于如何将维度连接到事实表的概念。但是,我在通过公共维度表连接多个(两个)事实表时遇到了一些困难。

具体来说,我有一个包含实际销售数据的事实表和一个包含预算数据的事实表。每个事实表共享两个维度表(一个客户表和一个项目表)

我的问题是,如何通过两个维度表连接两个事实表?

请参阅下面随附的简化示例,该示例说明了我正在寻找的结果集。

表 1 和表 2 是事实表,表 3 和表 4 是维度表。 表 5 所需的结果集。

0 投票
1 回答
401 浏览

sql - 我可以在这个维度模型中改进什么?

在此处输入图像描述

嗨,我是 Kimball Dimensional Modeling 的新手。我想知道是否有人可以就我在这个星型模式模型中可以改进的地方给我一些反馈?这是一个模型,每个客户每次付款一排。它还有一个客户维度设置为渐变维度类型 2。谢谢!

0 投票
2 回答
113 浏览

data-warehouse - FactLoanVolume - 一个或多个事实表

我正在设计一个事实表来报告贷款量。每笔贷款交易一排粮食。我们报告的贷款有几个重要的里程碑:按顺序,这些是锁定量、贷款资金量和贷款销售量。

我在 Fact 表中将 Lock Date、Loan Funding Date 和 Loan Sale Date 作为 FK(除此之外还有其他维度),以便在我的 DimDate 表中扮演角色。

我的问题是,我应该创建单独的事实表来报告每个主要里程碑的数量,还是应该将所有这些都保存在一个事实表中并使用“遥远的未来”日期(例如,2099 年 12 月 31 日)作为里程碑在尚未偿还的贷款上?

我读过 Kimball 的书,但没有找到明确的答案(如果存在的话)。

谢谢