如何尺寸模型在金博尔式数据仓库这种关系?(How do I dimensionally model

2019-11-04 07:29发布

所以,我有我的数据仓库的两个维度:

dim_machine
-------------
machine_key
machine_name
machine_type


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

我想确保的是在两个维度上的计算机类型字段具有相同的数据。 我应该创建一个第三个维度的两个或有另一种替代方案之间雪花?

Answer 1:

我不知道你要解决什么问题? 这听起来像的东西,你会简单地建成的ETL过程:两个维度,源数据映射到机器型号相同的目标名单。 如果一个新的值将出现一个没有映射,产生一个错误(或设置默认值的占位符,后来查看数据)。

一个完全不同的选择将是一个“小尺寸”(Kimball的术语),包含所有可能的机器/工具组合。 如果两个维度密切相关,往往在搜索中使用起来那么它可以整合和简化他们有用的方式。 但即便如此,我想你会检查和清理源数据符合机器的类型。



Answer 2:

请记住,数据仓库是一个反规范化的结构,所以是正常的数据以维重复。 完整性应在运作系统和ETL工艺来提供。 假设,我们有一些像下面的模型。

该分配工具的业务流程必须知道哪些工具可以哪台机器上安装。 假设一个错误的工具是一台机器上安装莫名其妙。 这是更好地导入数据,以匹配事实,并运行一个报告,会发现在业务流程中的一个bug,而不是打破了ETL过程,因为工具和机器类型不匹配。

例如,查询(报告)这样沃尔德发现不匹配,并会证明非常有用。

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 ;


文章来源: How do I dimensionally model this relationship in a Kimball-style data warehouse?