问题标签 [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 投票
1 回答
391 浏览

postgresql - 将非星型模式数据库转换为星型模式数据库

我是 OLAP 新手,遇到了以下情况:

我有一个包含数百个表的无星型数据库(PostgreSQL),现在我需要将其转换为星型数据库以执行 OLAP。这里有一些问题:

  1. 我是否必须以星型模式的形式创建一个新数据库并将现有数据插入新数据库?如果是这样,是否有任何工具可以帮助我自动完成该任务?

  2. Mondrian 需要的数据应该是星型数据库,但我的 Web 项目是基于无星型数据库的。也就是说,每次我得到一个新记录,我都必须同时更新两个数据库,对吧?

我会感谢你的帮助,谢谢!

0 投票
2 回答
144 浏览

sql - 数据仓库 - 计算前 5 名大学的 MDX 查询

我正在尝试创建一个星型模式来分析大学的排名。

我创建了下面的星型模式;

事实表;

排行

  • University_id
  • Time_id
  • 分类_id
  • 排名(衡量)

维度和层次结构;

University_id

  • 状态
  • 城市
  • 大学名称

time_id

  • 四分之一

分类 ID

  • 类别(可以是工程,或社会科学等)
  • 类型(可以是计算机工程、土木工程等)
  • type_info(关于类型的信息)

我想编写一个 MDX 查询,列出 2011 年计算机工程方面加州排名前 5 的大学。结果应该包括大学名称和它的评级。

这是我的 MDX 查询;

我的星型模式设计和相关的 mdx 查询是否正确有效?否则我该如何改进我的解决方案或使其正确?我还创建了星型模式,因此我们可以对其进行更改以改进设计。

0 投票
1 回答
565 浏览

sql-server - 宽表的最佳 SQL 索引计划

你好 SQL 大师在那里......我有这个月之久的问题,我似乎无法解决。我有这个非常宽的(报告)表大约。100多个领域。目前,它有大约 200 万条记录,并且随着数据的出现速度,它可能会在未来 1-2​​ 个月内翻一番。目前运行可以接受。但在接下来的几个月里不再那么确定了。基本上,我只想知道这种类型的表的最佳索引计划是什么。这不是实际的表格,但非常接近。我只是想说明使用的各种数据类型。

现在,当前以这种方式查询此表:

每个参数/字段的可能值为:

我知道基本的执行计划阅读和我所看到的......有很多扫描正在进行。但正如我所说,似乎我已经碰壁了,这就是我现在在这里寻求帮助的原因:)。我知道如何根据小表的用途来索引小表,但表这么宽?我只能对自己哈哈大笑:D

有什么想法吗?我已经阅读了一些关于 Columnstore INDEX 的内容。这是我能想到的最可行的解决方案。但目前关于这种方法的可用信息非常少。

如果你想知道我是怎么想出这张桌子的。那么它的内容来自不同的表(展平)。每晚进行处理。结果被导出到 CSV 文件中,然后该文件将用作另一个报告应用程序的数据源。

提前致谢!

0 投票
2 回答
332 浏览

data-modeling - 累积快照表中可以包含多个日期吗?

我试图理解维度建模。在阅读维度建模书籍时,我创建了一个星型模式。

事实表是一个累积快照表,它有多个日期列,这些列使用代理键链接到日期维度。

我确实有一个定义明确的过程,我正在尝试为其制作这个星型模式。我在每个步骤的事实表中都有一个日期字段,因为我需要准备像报告和活动报告这样的漏斗。所以问题真的是

这个对吗?事实表可以多次引用同一个日期维度表吗?

我在互联网上看到的例子似乎表明这是正确的,但我很难让它与 Pentaho 报告一起工作。所以我不确定这是设计问题还是我在 Pentaho 中没有正确执行的操作

0 投票
2 回答
1307 浏览

data-warehouse - 数据仓库多值属性

免责声明:我以前从未创建过数据仓库。我已经阅读了 Kimball 的数据仓库工具包的几章。

背景:工厂(工厂)管理团队需要能够以各种方式对生产信息进行切片和切块,并且我们希望在我们部门的制造工厂之间具有一致的报告格式。通过业务分析,我们得出的结论是,事实粒度是每个流程完成 1 行。一个完整的过程可以意味着“机器”或“组装”。我称之为“生产事实”。

企业需要回答的问题如下:

  • 流程完成时谁在工作?
  • 该过程的周期时间是多少?
  • 该流程正在生产的零件的序列号是多少?

我的架构包括以下一级维度。我没有超出第一级的任何尺寸,但工厂尺寸与零件类型、班次和工艺尺寸之间存在一些交叉关系。

  • 零件类型(属性:代理键、零件编号、型号、变体、零件名称)
  • 植物(属性:代理键、植物名称、植物缩写)
  • Shift(属性:代理键、工厂键、开始 Hour24、开始分钟、结束 Hour24、结束分钟)
  • 流程(属性:代理键、工厂键、生产线、流程组、流程名称、机器类型)
  • 日期(典型的日期维度属性)
  • 一天中的时间(一天中的典型时间维度属性)

无量纲事实是:

  • 零件序列号(零件类型的实例)
  • 周期
  • 员工 ID *多值*

问题

我的问题是,当时可能有不止一名员工在处理这个过程。所以,我想知道是否需要更改我的模型以及如何最好地代表模型中的员工。我们不是试图保存员工信息,只是他们的公司员工 ID。我考虑了以下选项:

  1. 允许在事实表的员工列中使用多个员工 ID(例如,逗号分隔)。缺点:在流程上工作的员工数量是可变的。我是否需要创建足够大的字段以容纳最多 X 名员工?X 应该是什么?
  2. 为每个员工的每个生产事实创建一个记录。这意味着同一事实的记录不止一个;那会很糟糕。:)
  3. 在员工维度表和事实表之间创建一个员工维度和一个“流程员工”桥接表。问题:当时在流程上工作的员工并没有出现在事实表中。
  4. 创建员工维度、流程员工组表以及流程员工组表和员工维度表之间的桥接表。员工组和桥表需要 a) 预先填充所有可能的员工组合——这在任何级别上都不实用,因为我们有数千名员工——或者 b) 在 ETL 期间动态填充。4b 需要检查每个流程是否已经存在给定的员工组;如果源记录的批处理频率高于每天几次(例如,近实时报告每小时 10 次),这可能会对 DBMS/ETL 系统造成负担。

我的问题

我认为选项 3 是最可行的选项,但我有一些保留意见。是否有潜在的注意事项?我应该考虑其他替代方案吗?是否可以将参与该流程的员工从事实表中剔除?

谢谢你的任何建议。

0 投票
2 回答
459 浏览

etl - 事实表组织

我正在参与创建利用 Kimball 星型模式方法的报告软件。整个团队(包括我)都没有使用过这项技术,所以我们是新手。
到目前为止,或系统中有几个维度和事实表。例如:
- DIM_Customer(客户维度表)
- DIM_BusinessUnit(业务单位维度表)
- FT_Transaction(事实表,每笔交易的粒度)
- FT_Customer(客户事实表,客户 ID 和截止日期在复合 PK 中)

这是 FT_Customer 的当前结构:
- customer_id #(客户 ID,复合 PK 的一部分)
- as_on_date #(观察日期,复合 PK 的一部分)
- waic (KPI)
- wat (KPI)
- waddl (KPI)
- wadtp ( KPI)
-aging_bucket_current (KPI)
-aging_bucket_1_to_10 (KPI)
-aging_bucket_11_to_25 (KPI)
- ... ...
字段 waic、wat、waddl 和 wadtp 与交易支付延迟有关。这些字段是通过针对按 customer_id 和 as_on_date 分组的 FT_Transaction 表的聚合查询计算的。
字段aging_bucket_current、aging_bucket_1_to_10 和aging_bucket_11_to_25 包含按付款延迟分类的交易数量。例如,aging_bucket_current 包含按时支付的交易数量,aging_bucket_1_to_10 包含延迟 1 到 10 天支付的交易数量……
此结构用于从 PHP Web 应用程序和 Cognos Studio 生成报告。我们讨论了重组 FT_Customer 表,以使其更适用于 Cognos 等外部系统。
FT_Customer 的新提议结构:
- customer_id #(客户 ID,复合 PK 的一部分)
- as_on_date #(观察日期,复合 PK 的一部分)
- kpi_id #(KPI 的 id,指向 DIM_KPI 维度表的外键,复合 PK 的一部分)
- kpi_value(值 KPI)
- ... ...
对于这个提案,我们将有额外的维度表 DIM_KPI:
- kpi_id #
-标题
此表将包含所有 KPI(wat、waic、waddl、老化桶...)。
FT_Customer 的第二个结构显然会比当前结构有更多的行。
FT_Customer 哪种结构更通用?
将两种结构保存在单独的表中是否可以接受?这显然会给 ETL 层带来额外的负担,因为有些工作会重复两次,但另一方面它会更容易生成各种报告。

提前感谢您的建议。

0 投票
0 回答
214 浏览

sql-server-2012 - 在表格模型中钻取功能

我们有一个表格模型,它有 3 个事实和几个维度。

在这 3 个事实中,有 2 个是关于帐户和产品的。

与客户帐户相关的事实。有多少是活跃的,当前余额是多少,一开始的余额是多少等等。

Product Fact 是关于客户拥有的不同补充产品。他/她可能有也可能没有补充产品。现在这有诸如客户在不同产品中的欠款、回扣金额等事实。

现在他们都有 Dimension Account 作为共同的 Dim。

帐户和产品之间的关系是 1-M。如果一个帐户有补充产品,它可以是 1、2 和最大 3。如果没有,它是 1-0 :)

我们遇到的问题是,如果我们想通过 Account Dim 属性来分割这两个事实,我们只会得到具有补充产品的帐户。因为我相信表格模型适用于 INNER JOINS。在这种情况下,我想要 OUTER JOIN。由于我希望所有帐户都通过查询以及我匹配补充产品的位置然后是该产品的事实。

任何帮助表示赞赏。

0 投票
3 回答
545 浏览

dataset - 如何在 Google BigQuery 中获取数据集名称,包括“publicdata”

我为 google BigQuery 创建 jdbc 连接如下

然后我得到目录名称如下

但现在我正在尝试获取数据集名称。它返回空值。

我可以获得公共数据的数据集名称吗?如何??

0 投票
0 回答
185 浏览

virtualization - 虚拟化星型模式

有没有人有关于虚拟化星型模式模型的经验?即制作包含事实和维度数据的数据库视图,而不是将它们放在物理表中。

0 投票
2 回答
835 浏览

ssas - 星型模式中作为事实表的客户维度

维度表也可以变成事实表吗?例如,我有一个客户维度表,其中包含名称、性别等标准属性。

我需要知道今天、上个月、去年等使用 SSAS 创建了多少客户。

我可以使用客户键和日期键创建不露面的事实表,或者我可以使用相同的客户维度表,因为它已经具有这两个键。

将客户维度表用作事实和维度是否正常?

谢谢