问题标签 [star-schema]

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 投票
4 回答
4824 浏览

etl - Pentaho ETL 和数据分析器是不错的选择吗?

我一直在寻找 ETL 工具,在谷歌上发现了很多关于 Pentaho Kettle 的信息。

我还需要一个在 Star Schema 上运行的数据分析器,以便业务用户可以使用并生成任何类型的报告或矩阵。PentaHo Analyzer 再次看起来不错。

应用程序的其他部分将使用 java 开发,并且应用程序应该与数据库无关。

Pentaho 是否足够好,或者我应该检查其他工具。

0 投票
4 回答
1149 浏览

database-design - 星型模式:客户和非客户的单独维度或服务员的共享维度?

我是星型模式建模的新手,刚阅读过Data Warehouse Toolkit

我有一个业务流程,让客户和非客户与我们的一些员工进行电话会议。

我的事实表,称之为“观众”,将包含一个参加者连接到呼叫的时间,以及这个人连接到呼叫的成本。颗粒是“单独连接到电话会议”。

我是否应该以这种方式使用符合标准的客户维度并创建非客户维度(对于尚未成为客户的调用者)(省略不属于此问题的维度):

第一个潜在模型

或者以这种方式具有与符合标准的客户维度相关的不符合标准的出席维度是否可以/更好:

第二个潜在模型

或者是否有更好/标准的机制来模拟这样的业务流程?

编辑:

如果使用上面的模型 2,但是在客户维度表和参与维度之上创建一个视图以使其看起来只是一个维度,那又如何呢?

这是下面达米尔答案的可接受替代方案吗?

0 投票
2 回答
5160 浏览

database - 插入星型模式

我已经阅读了很多关于星型模式、事实/分解表、选择语句以快速报告数据的内容,但是将数据输入星型模式的问题对我来说似乎很冷漠。如何“理论上”将数据输入星型数据库?同时维护事实表。是我唯一的选择(以及如何填充事实表)在巨型存储过程中使用 20 个参数的一系列 INSERT INTO 语句。非常感谢。

0 投票
1 回答
1113 浏览

sql - 从所有其他维度中都有事实的维度中选择所有值

为了提出这个问题,我试图简化。希望这将是可以理解的。

基本上,我有一个具有时间维度、另一个维度和层次维度的事实表。出于问题的目的,我们假设分层维度是邮政编码和州。另一个维度只是描述性的。我们称它为“客户” 假设有 50 个客户。

我需要找到一组状态,其中至少有一个邮政编码,其中每个客户在时间维度上每天至少有一个事实行。如果一个邮政编码只有 49 个客户,我不在乎。如果 50 个客户中的一个在邮政编码中甚至 1 天都没有价值,我不在乎。最后,我还需要知道哪些邮政编码符合该州的选择条件。请注意,并不要求每个邮政编码都具有完整的数据集 - 只需至少一个邮政编码即可。

我不介意进行多个查询并在客户端进行一些处理。这是一个每天只需要生成一次并且可以缓存的数据集。我什至没有看到一种特别干净的方法来处理多个查询,而不是简单的蛮力迭代,并且数据集中有很多“邮政编码”(实际上不是邮政编码,但是那里在层次结构的较低级别大约有 100,000 个条目,而在顶层有数百个条目,因此 zipcode->state 是一个合理的类比)

0 投票
3 回答
8497 浏览

data-warehouse - 星型架构[事实 1:n 维度]...如何?

我是数据仓库的新手,我希望有一个关于构建星型模式的简单问题:

如果我有一个事实表,其中事实记录自然与单个维度具有一对多关系,那么如何建模星型模式来支持这一点?例如:

  • 事实表:销售点入口(计量单位为 DollarAmount)
  • 维度表:促销(这些是在进行销售时有效的促销)

情况是我希望单个销售点条目与多个不同的促销相关联。这些促销活动不能是它们自己的维度,因为有很多很多促销活动。

我该怎么做呢?

0 投票
4 回答
2054 浏览

join - 如何避免星型模式中的复杂连接?

我的事实表包含他参加的课程中的用户分数。我必须在报告中显示的课程的一些细节来自不止一个表(在实际的 OLTP 数据库中)。
我是否在维度表中创建该课程条目的非标准化版本?
还是我只是将事实表直接加入课程表加入描述该课程的其他表(课程类型,创建该课程的教师等)

0 投票
2 回答
2180 浏览

sql - 星型模式设计 - 一列维度

我是数据仓库的新手,但我认为我的问题相对容易回答。我建立了一个星型模式,带有一个维度表“产品”。此表具有“PropertyName”列和“PropertyValue”列。因此,维度看起来有点像这样:

等等。

在我的事实表中,我总是使用维度的代理键。PropertyName 和 PropertyValue 列的原因是我的自然键不再是唯一的/识别的,所以我的事实表中的行太多了。

我现在的问题是,我应该如何处理属性列?最好将每个属性放入单独的维度中,例如维度大小、维度颜色等?我得到了大约 30 种不同的属性。或者我应该为事实表中的每个属性创建列吗?还是制作具有所有属性的一维?

提前感谢您的帮助。

0 投票
1 回答
206 浏览

database - 数据仓库:建模工作负载分配

我们有一个系统来跟踪工作单元的分配,从接收该工作单元到完成该工作单元。

一个工作单元有许多属性,它的来源,它的类型等。这些我对建模相当满意,可能是事实的维度或只是属性,这取决于它们的性质以及我们的用户希望报告的方式在他们。

问题是分配。

一个工作单元可能流经多个团队,在这些团队中它可能流经多个个人。可以对该工作单元执行操作。

我们的用户将有兴趣对此进行报告。

例如,在特定时间段内按团队分配了多少工作单元。

我是数据仓库的新手,所以我不确定如何建模。到目前为止,我确定的候选人是:

1) 缓慢变化的维度

可能使用类型 4,用于分配给团队和团队内的人员。

2) 快照

具有类型 4 的主要事实的从/到属性,说明它何时在帐户中,因此每个工作单元在将填充多维数据集的事实表中出现多次。

3) 累积快照

我不确定我是否理解这是什么,我不确定它是否相关。

有很多东西会像这个 SCD、团队、团队成员、状态、工作单元的队列分配等。所以这似乎是相当数量的 SCD。

我的选项列表中还有什么我遗漏的吗?我从根本上误解了什么吗?

0 投票
2 回答
2787 浏览

database-design - 星型模式设计的一般理解

所以,我想我明白在维度中放入什么,在事实表中放入什么,以及如何实现这一点。现在我遇到了问题,我有这个维度“产品”和一个维度“产品属性”。我不得不拆分它,否则我在“产品”中的自然键将不再是唯一的。我在 这个问题中问过这个。

所以我的“productProperties”维度表应该是这样的:颜色 | 材料 | 尺寸

1.)为了实现这一点,我必须创建“颜色”、“材料”、“尺寸”等值的所有可能排列,对吧?

这将远远超过 2 亿行,所以我决定将其拆分。我现在有一个维度“颜色”,它实际上由“颜色”、“颜色前”、“颜色后”列组成。

2.)我猜这很好,但是维度“大小”呢,它只包含“surrogate_key”和“value”列?

我已经阅读了“退化维度”(在我的另一个问题中给出的阅读建议中),这意味着在事实表中将“单列维度”设为一列。这对我来说似乎有点不切实际,因为我最终会在我的事实表中增加大约 5-6 列。

如果我应该这样做怎么办?

3.) 这些退化维度是事实表中主键的一部分吗?

最重要的问题:我的事实表中将包含产品条目,这些条目与我的维度中的每一列不匹配,或者根本不匹配所有维度。意思是,我可能有一个条目/产品,它具有“color”属性,但没有“colorFront”或“colorBack”属性。由于我创建了“color”、“colorFront”和“colorBack”的每一个排列,当尝试填充我的事实表时,我将获得多个代理键,如果产品只有属性“color”会导致我的重复事实表,对吧?

4.) 那么在查询我的事实表时,我是否必须过滤掉那些重复项?或者这是完全错误的?

我当然可以在三个维度上拆分维度“颜色”。但随后我将在某些列中获得具有 NULL 值的条目。完全不使用某些尺寸的条目/产品也是如此。

5.) 如何处理那些 NULL 值?

提前感谢您的帮助。

0 投票
2 回答
3725 浏览

mysql - 用于通过不断变化的数据实施近实时分析的星型模式

我为医疗软件实施分析。要处理的数据主要是约会相关的。我计划实施星型模式来生成报告。我有几个疑问

  1. 我的数据可以更改,就像以后可以将约会标记为已取消一样,我读到更改星型模式中的数据不是一个好主意。如果不是什么是更好的方法。
  2. 当数据添加到我的主数据库时,我的事实表中的数据将由后台任务插入。将数据不断插入事实表是否是一个问题,因为几乎可以随时在应用程序中查看转发。
  3. 我打算在 mysql 中实现它,如果有人能指出一些与这种结构的 mysql 性能相关的帖子,那就太好了。还有一个更好的引擎来实现这个模式 Innodb 或 Myisam

谢谢。