首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在一个Kimball风格的数据仓库中对这种关系进行维度建模?

如何在一个Kimball风格的数据仓库中对这种关系进行维度建模?
EN

Stack Overflow用户
提问于 2010-10-11 20:43:37
回答 2查看 1.1K关注 0票数 0

因此,我的数据仓库中有两个维度:

代码语言:javascript
复制
dim_machine
-------------
machine_key
machine_name
machine_type


dim_tool
------------
tool_key
tool_name
machine_type

我想要确保的是两个维度中的machine_type字段具有相同的数据。我应该在两者之间创建一个三维雪花,还是有其他选择?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-11 22:08:09

我不确定你到底想解决什么问题?这听起来像是您可以简单地构建到ETL流程中的东西:对于这两个维度,将源数据映射到相同的机器类型目标列表。如果出现没有映射的新值,则引发错误(或设置默认占位符值并在以后检查数据)。

另一种完全不同的选择是“迷你维度”(Kimball的术语),它包含所有可能的机器/工具组合。如果两个维度密切相关,并且经常在搜索中一起使用,那么这可能是合并和简化它们的有用方法。但即使这样,我也假设您将检查和清理源数据以符合机器类型。

票数 2
EN

Stack Overflow用户

发布于 2010-10-12 00:37:05

请记住,数据仓库是一种非规范化结构,因此数据在维度中重复是正常的。应在操作系统和ETL流程中提供完整性。假设我们有类似下面的模型。

分配工具的业务流程必须知道哪种工具可以安装在哪台机器上。假设以某种方式在机器上安装了错误的工具。最好导入数据以匹配实际情况,并运行报告以发现业务流程中错误,而不是因为工具和机器类型不匹配而中断ETL流程。

例如,像这样的查询(报告)会发现不匹配,这将证明是非常有用的。

代码语言:javascript
复制
select
      'tool-machine mismatch' as alarm
    , full_date
    , machine_name
    , machine_type
    , tool_name
    , matching_machine_type
    , employee_full_name
from fact_installed_tools as f
join dim_machine          as m on m.machine_key  = f.machine_key
join dim_tool             as t on t.tool_key     = f.installed_tool_key
join dim_date             as d on d.date_key     = f.date_key
join dim_employee         as e on e.employee_key = f.employee_key
where machine_type != matching_machine_type ;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3906275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档