问题标签 [dimensional-modeling]
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.
sql-server - 跨多个事实表连接,中间有一个维度
如果请求的报告需要关于相同维度(和相同粒度)的汇总信息,但基础数据存储在单独的事实表中,那么数据仓库设计的好方法是什么?
例如,当工资和费用记录在不同的事实表中时,显示每个员工每年支付的总工资和报告的总费用的报告。或者一份报告列出公司销售的每个 SKU 的每月总销售额和每月收到的库存,当销售额来自一个事实表而接收来自另一个事实表时。
天真地解决这个问题似乎很容易:只需并行查询和聚合两个事实表,然后在数据仓库或客户端应用程序中将聚合结果拼接在一起。
但我也对思考这个问题的其他方式感兴趣。其他人是如何解决的?我想知道数据仓库模式和设计,以及使该设计对客户端工具友好,以构建像上面的示例一样的报告。
此外,这个“维度三明治”用例在规范数据仓库术语中是否有名称?如果是,那将更容易通过 Google 进行研究。
我们正在使用 SQL Server,但我现在遇到的问题希望与平台无关。
data-warehouse - 布尔或过滤的维度建模
维度建模如何解决布尔或过滤要求?
例如,假设Customer
具有属性HomeAddressId
和的维度BillingAddressId
。两个字段都指向一个Address
维度。一些企业用户只关心家庭地址,其他用户只关心帐单地址,但有些用户希望过滤结果,例如“所有在德克萨斯州有帐单或家庭地址的客户”。
另一个示例:“联系人”维度可能具有属性Email1
和Email2
,但过滤几乎总是在两个字段上而不是在一个或另一个上。
sql - 具有多个属性的维度行
这不完全是我正在做的,但我觉得这是一个很好的例子:
假设我有一个连接到我的 ProductSales Fact 表的产品维度表。dimProduct 中的每一行都包含单个产品的所有相关数据(代码、名称、描述等),并且大约有一百万种产品。
我现在需要将产品类别存储到仓库中。每个产品有多个类别,平均为 5 个。
我是否应该为产品适合的每个类别复制 Product Dimension 中的整行,或者我应该使用 dimCategory 维度和两者之间的 dimProductCategory 链接表来雪花我当前的星型模式?
恐怕如果我做前者,那么我的 Dimension 表会变大 5 倍以上,如果我做后者,那么模型会变得更加复杂。
oracle - 数据仓库中事实表的复合索引 - 数据集市
在 Oracle EDW 中的事实表上保留复合唯一索引是否是一种最佳实践 - 避免重复的数据集市?它会影响 ETL 数据加载性能吗?请提供您对此主题的看法。获得 ETL 负载的 SLA 的其他替代方法是什么?
database-design - 星型模式设计:当源系统与多对一(N:1)相关时,使用 2 维还是 1 一致维?
我正在创建一个星型模式来为学校的术语和课程建模。
学习管理系统 (LMS) - 上课的地方,将每个课程与特定的 LMS 术语相关联。
学生信息系统 (SIS) - 学生注册课程的地方,以比 LMS 更精细的方式对术语进行建模。因此,每个 LMS 术语都有多个 SIS 术语。
每个事实记录都以班级内的学生为粒度,并与 1 个 LMS 学期相关联。
看来我可以制作二维表:DimSisTerm 和 DimLmsTerm。
或者,我可以制作 1 个符合要求的维度表:DimTerm
在单个符合维度的情况下,每个 SIS 术语将有 1 条记录,但是 LMS 术语键及其属性将针对所有相关的 SIS 术语记录重复。
之前经历过这种情况的人可以就这两种情况之间的权衡提供指导吗?
data-warehouse - 维度建模的命名标准
我正在使用 Kimball 的方法为数据仓库项目进行我的第一个维度建模任务。当我准备模型并考虑物理对象时,我想知道推荐的数据库对象命名方案是什么。我们将使用 Oracle,目前我们还没有任何标准。任何帮助,将不胜感激。
database-design - 同一实体具有不同业务键的维度
我们有一个维度建模场景,如下所示。
如果产品来自不同的来源和同一产品的不同业务密钥,如何创建产品维度。任何数据仓库专家请分享您的想法
data-warehouse - 数据仓库 - 在事实表中存储历史数据
我是数据仓库的初学者。我们创建了一个数据集市,一个星型模式设计来加载季度数据。当该季度的业务批准时,我们一直在加载当前数据。
现在我们需要返回并加载历史数据(3 年,大约 40GB)。加载此数据的维度将与用于季度加载的维度相同。但是,我们可以将这些历史数据加载到同一个事实表中,还是必须创建一个重复的事实表来单独加载历史数据?那是DW标准吗?我正在尝试按照标准找到执行此操作的方法。
当前事实表在 load_cycle_date 上进行日期分区,它指定了加载数据的季度。
非常感谢!
sql-server-2008 - 微观策略与 SSAS
下面给出了一个示例维度表结构以供参考。
关于表:这里,skDoctorKey 是一个标识列。主键是 DocCode 3 名称列。
Microstrategy:如果我们在 Microstrategy 中使用此表,我们将使用 like,[DocCode]是属性,[FirstName]、[lastName] 和 [MiddleName] 是属性 DocCode 的三个限定符。该表的最终结果是具有三个限定符的单个属性。
SSAS: 我将 DocCode 添加为 1 属性,其中 keyColumn 为[DocCode]。[FirstName]、[lastName] 和 [MiddleName] 三列需要作为单独的属性添加。对于所有这些,keyColumn 是相同的,即 [DocCode]。我发现的唯一方法是将 [FirstName]、[lastName] 和 [MiddleName] 拖到属性窗格中,然后将所有 3 个的键列更改为 [DocCode]。我需要一个一个地执行此操作。
如果我在 SSAS 或微观策略概念上犯了错误,请原谅我。
问题:
database - 事实表设计混乱 - 计算措施等
我对数据仓库和维度建模很陌生,我需要澄清一些事情。我目前有以下尺寸:
- DimProducts - 关于产品的信息。
- DimMaterials - 有关进入产品的材料的信息。
- DimLocation - 不同的商店位置
- DimTime - 带有年、季度、月、周、日的标准时间维度。
现在出现了关于事实表的困惑。目前有以下措施:
- 收入
- 花费
问题:
- 我也想将净利润作为衡量标准,但由于它是计算衡量标准,它应该是事实表中的一列还是应该在报告级别计算?关于计算度量的约定,我有点不清楚。
- 我还想知道在某个时间点有多少原材料可用,以便我可以计算我可以生产多少产品(例如,1 辆自行车有 2 个轮子意味着 3 月份有 50 个轮子可以生产 25 辆自行车3 月)。我应该添加一个名为原材料数量的事实吗?
我有一种感觉,我正在处理错误的问题 #2,我需要创建单独的事实表来处理该问题。非常感谢任何关于我是否走在正确轨道上的建议/提示。谢谢!