问题标签 [snowflake-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 回答
2036 浏览

relational-database - 标准化时间序列数据

我正在创建一个数据库来存储很多事件。它们会有很多,它们每个都有一个精确到秒的相关时间。例如,像这样:

行动、来源和目标都在 6NF 中。我想保持Event表格标准化,但我能想到的所有方法都有问题。为了明确我对数据的期望,绝大多数(99.9%)事件将是唯一的,仅具有上述四个字段(因此我可以将整行用作 PK),但不能忽略少数例外.

  1. 使用代理键:如果我使用四字节整数,这是可能的,但似乎只是无缘无故地夸大表格。此外,我担心长时间使用数据库并耗尽密钥空间。

  2. 将计数列添加到事件:由于我希望计数较小,因此我可以使用较小的数据类型,这对数据库大小的影响较小,但在插入之前需要更新插入或汇集数据库外部的数据。其中任何一个都会增加复杂性并影响我对数据库软件的选择(我正在考虑使用 Postgres,它会进行 upserts,但并不乐意。)

  3. 将事件分成小组:例如,同一秒内的所有事件都可能是 a 的一部分,Bundle其中可能有一个代理键用于组,另一个用于其中的每个事件。这为数据库增加了另一层抽象和大小。如果其他重复的事件变得普遍,那将是一个好主意,但否则似乎有点矫枉过正。

虽然所有这些都是可行的,但它们感觉不适合我的数据。我正在考虑只做一个典型的雪花而不是在主表上强制执行唯一性约束,但是在阅读了这样Event的PerformanceDBA 答案后,我认为也许有更好的方法。

那么,保持具有少量重复事件的时间序列数据归一化的正确方法是什么?

编辑:澄清 - 数据来源是日志,主要是平面文件,但也有一些在各种数据库中。该数据库的一个目标是统一它们。没有一个来源的时间分辨率比第二个更精确。这些数据将用于诸如“有多少不同的来源在时间间隔内对目标执行操作?”之类的问题。其中间隔不会少于一个小时。

0 投票
1 回答
696 浏览

data-modeling - 雪花架构维度

这是我第一次做 BI 项目,Pentaho 产品对我来说还不熟悉,所以我需要知道以下模型是否正确,以及以后在 BI Server 上创建层次结构时我不会遇到困难!

谢谢你。

时间维度: 在此处输入图像描述

并发症维度,每个并发症都可以有子并发症: 在此处输入图像描述

0 投票
0 回答
808 浏览

mondrian - 具有多层蒙德里安的雪花维度

我的表结构如下

现在我必须将等级和级别作为维度的级别。

写在“dim_question_tbl”表上的多维数据集。

我把维度写成

这不起作用。我得到的例外是“[等级]”必须至少有一个级别。

我也试过用sql查询

使用 sql 查询也是我得到的相同异常。

谁能帮助我如何使用雪花模式获得多个级别?

0 投票
2 回答
843 浏览

sql-server - OLAP 和 OLTP 之间的关系完整性

我一直在审查客户的体系结构,特别是他们的 OLAP 系统,它只是 SQL Server 上一个普通的旧雪花模式。事实和维度是从其他事务系统(例如 ERP)中进行 ETL 处理的。

我突然想到的一件事是同一个数据库中的几个附加表,用于多个附加 OLTP 应用程序。这些表与雪花模式中的维度表具有 FK 关系。

OLTP系统的维度数据有很多join,所以性能不是最好的。

我根本不是 OLAP 专家。但这只是感觉不对。我已经进行了一些搜索,但无论是赞成还是反对,在互联网上都找不到太多关于此的内容。这样做有什么好处?有吗?潜在的问题呢?

0 投票
2 回答
472 浏览

sql - 数据仓库模式:星形或雪花(包括案例)

我需要一个特定案例来为大学创建数据仓库模式。我试图创建一个 [schema] http://i.imgur.com/EJPaVgq.jpg但看起来我走错了方向

案子:

大学目前有 5 门课程——基础、商业计算、商业、经济学和法律。它提供5个级别的教育。每个学年包括2个学期。我们有许多属于课程的模块,其中一些是核心模块,有些是可选的。有些模块是一个学期,有些是一年。每个模块都有评估组件,这些组件的权重对模块的整体分数有所贡献。评估有不同的类型,如课堂测试、课程作业、期末考试等。学生从 Foundation 开始注册课程。学生可能会随着时间的推移改变课程(例如从商业转移到商业计算)。大学想了解: • 学生注册课程和模块,并跟踪他们随时间的变化。

如果可能,请将架构作为屏幕截图或其他方式附加。我是数据仓库的新手,所以我对它了解不多,也没有创建它们的经验。我将非常感谢任何能够以某种方式更接近解决问题的帮助。对不起我的英语不好。谢谢你,祝你有美好的一天。

0 投票
1 回答
946 浏览

data-warehouse - 分层建模数据仓库——雪花还是星星?

嗨,我正在做一个关于数据仓库的项目,但我不确定我是否正确地为我的数据仓库建模。我的数据仓库不在业务流程中,因此我找到的信息很少。

基本上我有很多库文件,每个库文件包含许多单元信息,每个单元包含许多引脚信息,每个引脚包含时序和功率信息。不同的库文件基本上包含相同数量的单元和引脚结构,只是时序/功率信息不同

库 -> 单元 -> 引脚 -> 时序/电源

我很想知道电池属性-时间/功率,以便稍后进行比较。

我是否应该在雪花模式中按仓库建模,其中我的事实表仅包含库维度和日期维度的外键。然后库维度又分为cell维度,cell维度又分为pin维度,pin维度又分为时序维度和功率维度

或者在我的事实表包含库、单元格、引脚、时间、功率和日期维度的外键的星型模式中?

我担心的是我的数据非常大,因为我有大约 200 个库文件,每个库文件包含大约 20k 单元,每个单元包含几个引脚,每个引脚包含一些时序和功率信息。因此总尺寸很大,即 200 x 20,000 x 4 x 4

每当有新版本的库文件发布时,我都会不断地输入这个庞大的数据集

可以给我建议哪个更好吗?dfdf

编辑:

层次结构如上所示。不同的库将包含相同的单元、引脚和条件,只有时序和电源模板不同。

假设我的事实粒度将是特定单元格的时间和功率值,
因此我的维度将具有库、单元格、引脚、条件、risingTimingTemplate、fallTimingTemplate、risePOwerTemplate 和 fallPowerTemplate,所有链接到事实表是否正确?

0 投票
1 回答
125 浏览

data-warehouse - 维度建模 - 各种维度组合键中使用的通用属性

我在这里遇到了以前从未遇到过的情况。

我有同一个 ERP 系统的多个实例,因卫星区域设置而异。每个语言环境都分配有自己的 ID。

在每个卫星位置内,数据库模式与其他模式、相同的表、相同的值相同。

当组合来自这些语言环境中的两个或更多的表时,比如说部分,它们的自然操作键将是相同的,但附加的属性数据可能不同。由于我需要能够链接到一个部件,基于它来自哪个卫星区域设置,我想我需要一个复合键 - 部件 ID 和卫星 ID。

现在这对于这个单一维度来说是可以的,但是,这个卫星 ID 在许多其他维度的其他地方以相同的方式使用。它也是许多事实表的主要切片器。

我应该如何对待这个属性?把它放在它自己的维度里,雪花呢?或者将值推入每个维度(重复),然后让事实表将唯一的 FK 保存到卫星维度?

0 投票
1 回答
525 浏览

data-warehouse - 用户使用报告的星型模式设计

场景:我为用户导出了 3 种利用率指标。在我的应用程序中,使用他的登录历史记录、用户拨打的客户电话次数、用户执行的状态更改次数来跟踪用户活动。

所有这些信息都保存在我的应用程序数据库中的 3 个不同的表中,例如 UserLoginHistory、CallHistory、OrderStatusHistory。每个用户所做的所有操作与日期时间信息一起存储在这 3 个表中。

现在我正在尝试创建一个报告数据库,以帮助我生成用户的整体利用率。基本上,报告应该在一段时间内向我展示每个用户:

  1. 用户名
  2. 角色
  3. 登录次数
  4. 通话次数
  5. 进行的状态更新次数

现在我正在设计我的事实表。我应该如何为这种情况创建一个事实表?我应该创建一个包含行的单个事实表,在粒度日期级别(在我的 DimDate 表级别)捕获所有这些详细信息,还是 3 个不同的事实表并将它们关联起来?

我上面描述的 2 个选项没有说服力,我正在寻找更好的设计。谢谢。

0 投票
1 回答
125 浏览

data-warehouse - 是否可以有条件 OLAP 维度聚合器?

我有一组 OLAP 多维数据集,以雪花模式的形式,每个代表一个工厂。

我有三个概念,对于某些工厂而言,它们显然表现为 3 维,而对于其他工厂而言,它们显然表现为 2 维。

概念始终相同:“产品”、“销售代理”和“客户”。

但在某些情况下,我怀疑是否应该将其建模为纯 3 维立方体,或者我应该对 2 维立方体进行一些调整或技巧。

案例 A 和 B 对我来说是清楚的,而案例 C 是让我产生疑惑的案例。

案例 A:显然是一个 3 维立方体

任何代理商都可以向任何公司出售任何产品。多个代理共同负责同一组客户。

我将此案例建模为:

在此处输入图像描述

案例 B:显然是一个二维立方体

每个代理都对一组客户“负责”,他可以销售任何产品,但仅限于他的客户。分析是针对“当前对投资组合的责任”进行的,因此如果代理离开公司,他的所有客户都将重新分配给新代理,并且客户唯一属于新代理。

我将此案例建模为:

在此处输入图像描述

案例 C:我的疑惑

可能已为客户分配了一个代理或一组多个代理,每个代理负责一个 ProductCategory。

例如:

  • Alice管理TablesAndWoods ltdGreenForest ltd
  • Bob管理Chairs ltdFastWheels ltd
  • CarolForniture ltd仅管理ProductType = 'machinery'并且还管理FrozenBottles ltd任何类型的产品。
  • Dave还管理Forniture ltd但仅针对ProductType = 'consumables'并且还管理HighCeilings ltd任何类型的产品。

问题:

在此示例“案例 C”中:

customer和是agent独立的维度,因为与和Forniture ltd都有关系,所以它是一个 3D 立方体?CarolDave

或者它是一个二维立方体,agent它不是一个独立的维度,而是产品聚合器customer以某种方式“调节”的ProductCategory聚合器?

我想看看你会如何建模。提前致谢。

0 投票
0 回答
89 浏览

amazon-s3 - 如何在雪花表中以毫秒为单位导入日期时间

我创建了 csv 文件并将这些文件上传到 AWS S3 存储桶。在 csv 文件中,我使用了时间戳列,而 Timespan 列中的数据如下:

'2006-10-01 18:26:47.523'

每当我尝试将此值导入雪花时,能够将记录插入为

2014 年 10 月 10 日 18:2647 700,任何人都可以指导我,这样我就可以导入毫秒列的数据。

感谢神