我应该为每个 grain 使用多个事实表还是只从最低 grain 聚合?

Should I use multiple fact tables for each grain or just aggregate from lowest grain?

对数据仓库设计和星型模式还比较陌生。我们设计了一个事实 table 来存储关于会员资格的各种度量,我们的谷物是每日的,这个 table 中的一些度量是新的售出数量,续订售出数量,活跃数量,取消数量.

我的问题是,企业将希望看到其他粒度的度量,例如每月、每季度、每年等。因此通常这里的方法只是聚合任何时间段的日级数据需要或者您会建议为我们的业务需求的“关键”时间段创建单独的事实 tables,例如月度、季度、年度?我已经阅读了一些关于此的混合信息,这主要是我寻求其他人意见的原因。

我读到的一些信息让人们在事实中嵌入层次结构 table 来指定不同的粒度,然后通过“级别”类型的列来识别,这被很多人反对并且没有'对我来说似乎也不错,那些反对我们建议单独事实 tables per grain 但老实说,我不明白为什么我们不只是从我们拥有的每日条目中汇总,有什么好处除了一些轻微的性能改进之外,我们从每个谷物的事实 table 中得到?

每个数据集市都有自己的“视角”,这可能需要聚合事实粒度。

星型模式建模是一个“自上而下”的过程,您从一组问题或用例开始,构建一个模式,使这些问题易于回答。不是从源数据开始并从那里找出架构设计的“自下而上”过程。

您最终可能会得到多个数据集市,这些数据集市共享相同的粒度事实 table,但它们需要以不同的方式聚合它,以提高性能,或者有一个 gran 来计算和存储度量这仅在聚合谷物时才有意义。

例如

SalesFact (store,day,customer,product,quantiy,price,cost)

StoreSalesFact(store, week, revenue, payroll_expense, last_year_revenue)