星型模式 - 统一来自不同来源的不同结构的数据

Star Schema - Unify data with varying structure from different sources

我目前正在为衡量在线产品性能的报告数据库设计星型模式。挑战在于,我收到的信息原则上衡量的是相同的事实(访问、购买)并且具有相同的维度(用户性别、用户年龄、日期),但根据来源的不同粒度不同,例如,给定总计共 10 次访问:

问题是,如果我将它们存储在同一个事实中 table,我将在应用聚合函数时得到不正确的值:

Day Visits Age Gender Source
19/04/2022 5 18-24 Male A
19/04/2022 10 18-24 Female A
19/04/2022 2 NULL Male B
19/04/2022 8 NULL Female B
19/04/2022 10 18-24 NULL B

(来源 B 的访问列总和为 20,尽管我们对该来源只有 10 次访问,但由于数据结构不同,它们只是显示为两倍)

对于维度和事实大致相同但原始数据粒度不同的情况,是否有最佳实践?

Is there a best practice for cases where dimensions and facts are generally the same, but the raw data granularity is different?

您通常只能以与所有来源兼容的粒度呈现组合数据,例如 (Day)、(Age,Day) 或 (Gender,Day)。

或者,您可以“分配”源 B 数据,比如将当天的性别划分应用到每个年龄组。总计有效,但向下钻取没有意义。