问题标签 [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.
postgresql - PostgreSQL:有效地将数据加载到 Star Schema
想象一下 PostgreSQL 9.0 上具有以下结构的表:
为了简单起见,我只提到一个文本列,实际上它有十几个。该表有 100 亿行,每列有很多重复项。该表是使用 COPY FROM 从平面文件 (csv) 创建的。
为了提高性能,我想转换为以下星型模式结构:
然后,事实表将被替换为如下所示的事实表:
我目前的方法基本上是运行以下查询来创建维度表:
然后创建填充我使用的维度表:
之后我需要运行以下查询:
试想一下,通过将所有字符串与所有其他字符串进行多次比较,我得到的可怕性能。
在 MySQL 上,我可以在 COPY FROM 期间运行存储过程。这可以创建字符串的散列,并且所有后续字符串比较都在散列而不是长原始字符串上完成。这在 PostgreSQL 上似乎是不可能的,那我该怎么办?
示例数据将是一个 CSV 文件,其中包含类似这样的内容(我也在整数和双精度数周围使用引号):
database - 如何有效利用10+台电脑导入数据
我们有超过 200,000,000 行的平面文件 (CSV),我们将其导入到包含 23 个维度表的星型模式中。最大的维度表有 300 万行。目前我们在一台计算机上运行导入过程,大约需要 15 个小时。由于时间太长,我们想利用 40 台计算机来进行导入。
我的问题
我们如何有效地利用这 40 台计算机进行导入。主要担心的是,在所有节点上复制维度表需要花费大量时间,因为它们需要在所有节点上相同。这可能意味着,如果我们将来使用 1000 台服务器进行导入,由于服务器之间的广泛网络通信和协调,它实际上可能比使用单个服务器慢。
有人有建议吗?
编辑:
以下是 CSV 文件的简化:
导入后,表格如下所示:
维度表1
维度表2
事实表
attributes - 数据仓库星型模式的维度表和事实表中的数据如何?
我正在研究数据仓库星型模式和属性层次结构,我很困惑,因为本书的示例没有提供样本数据来确认我对事物的理解。
书中有一个销售数据仓库,其中包含具有以下属性层次结构的产品维度:PRODUCT(AllProducts, ByProductType, OneProduct)
见下图:
什么样的样本数据会进入产品维度表?
产品
AllProducts ByProductType One产品
? ? ?
? ? ?
? ? ?
如果我没记错属性是表列或字段,我无法理解该表中的数据如何
如果从同一张图像中获取维度时间,则可以轻松地对数据进行采样:
时间
年 季 月 周
2010 1 1 1
2010 1 1 2
2010 1 1 3
2010 1 1 4
我感到困惑的另一件事是数据在事实表中的样子。书中指出,事实表会故意包含重复数据。例如,要得出一整年的销售数据,不需要即时汇总每周的销售价值,因为它们已经被计算过了。现在,如果在时间维度中,我有一个主键值 1,它同时代表一年、季度、一个月和一周,我如何才能在事实表中保存 1 整年的合计值?
时间
ID 年 季 月 周
1 2010 1 1 1
SALES_FACT_TABLE
销售时间ID ProductID
1000 1 ?
database - 示例星型模式数据集
我正在寻找一些 OLAP 数据,最好是星型模式(或雪花)来测试新工具。我已经有了 Mondrian 提供的 Foodmart 数据库。数据类型并不重要,只要它具有维度和相关事实即可。尺寸越大,负载测试越好。任何人都知道我可以在哪里下载这样的数据集,最好是 SQL 或 CSV?(其他格式也可以)
report - 我们必须使用事实表进行报告吗?
我正在建立一个用于报告目的的数据集市。我是这个领域的新手,正在寻求帮助。
我有一个事实表和两个维度表。事实表只有3个字段,它的主键和外键引用两个维度表。这两个维度表包含与 1) 电话号码和 2) 分机号码相关的数据。(我不能合并这些维度表,因为它们有不同的信息)
如您所见,我的事实表没有任何定量列。
我想生成一个显示电话号码和相应分机的报告。
我可以通过对两个维度表执行连接来获取此信息。
所以我的问题是我必须为报告使用事实表吗?即我是否应该首先从电话号码表中获取密钥,在事实表上执行连接,获取分机密钥并在分机表上执行连接?
或者
只需连接两个维度表即可生成报告,因为在这种情况下可能吗?
我们必须涉及事实表吗?
谢谢阅读。
任何帮助表示赞赏。
etl - 如何使用 jasperETL 使用 CSV 文件中的数据填充星型模式数据库?
我是 jasperETL 的新手,我必须使用 CSV 文件中的数据填充星型模式数据库。有谁知道如何执行此任务?也许有一些教程或书籍,我可以在其中找到这些信息。我在互联网上搜索,但没有发现任何关于此的内容。先感谢您。
sql - 雪花模式比星型模式更适合数据挖掘吗?
我知道星型模式和雪花模式之间的基本区别——雪花模式将维度表分解为多个表以便对其进行规范化,星型模式只有一个“级别”维度表。但是雪花模式的维基百科文章说
“有些用户可能希望向数据库提交查询,使用传统的多维报告工具,这些查询无法在简单的星型模式中表达。这在客户数据库的数据挖掘中尤其常见,其中一个共同要求是定位客户之间的共同因素“谁购买了满足复杂标准的产品。通常需要一些雪花来允许简单的查询工具形成这样的查询,特别是如果在最初设计数据仓库时没有预期提供这些形式的查询。”
什么时候不可能在星型模式中编写查询,而对于相同的基础数据可以在雪花模式中编写?似乎星型模式总是允许相同的查询。
data-warehouse - 星型模式设计帮助
我被困在如何围绕我当前的 Web 应用程序组合一个星型模式(类似于 stackoverflow 的结构)。我有:
- 调查有很多问题
- 问题有很多投票
问题有很多评论
- 问题、投票和评论都附加到用户和日期
我被困在如何创建星型模式以便我可以存储和回答问题,即今天收到了多少票?问题 b 今天有什么评论,由谁评论?
任何想法都会有所帮助!
提前致谢
database-design - 星型模式建模 - 多对多
当我学习这个范例时,我正在基于 NFL 统计数据构建一个数据仓库——我有以下建模问题
球员可以为不同的球队效力不同的年份,同样的教练也可以在不同的职业生涯中执教不同的球队;球员也可能在不同年份扮演不同的位置(罕见但可能)
模拟不同年份球员、教练和球队之间分配的最佳方式是什么?
我会将不同年份的花名册信息存储在一个维度中吗?例如 DimTeamRoster 将有一个 TimeKey、TeamKey 和 CoachKey(因为一个团队只能有一个主教练)和一个 FactTeamRoster 和一个 TeamRosterKey、PlayerKey、Positionkey
或者我会有一个 FactTeamRoster,它有一个 TimeKey、TeamKey、PlayerKey、PositionKey?但是这种方法是否有意义,因为这个事实表不会真正存储任何度量,它只是存储那一年的分配
每种方法的其他一些可能的解决方案和优点/缺点/正确性是什么?