DW 上下文中的 Grain 是什么

What's the Grain in the context of DW

根据 Kimball 的数据仓库工具包

"The grain must be declared before choosing dimensions
or facts because every candidate dimension or fact must be consistent with the grain."

我对这个概念很困惑。谁能解释一下Grain是什么意思,在现实生活中打个比方或比喻来阐明这个概念。

一些示例:

  • "The sales table has a grain of DAY, STORE, PRODUCT"
  • "The sales table has a grain of DAY, STORE, PRODUCT, CUSTOMER"
  • "The sales table has a grain of HOUR, STORE, CUSTOMER"
  • "The sales summary table has a grain of DAY, STORE, PRODUCT_CLASS"

因此时间维度必须支持HOUR和DAY,产品维度必须支持PRODUCT和PRODUCT_CLASS。

添加到 David 的示例中。如果您的日期维度最低粒度是一周而销售粒度是一天怎么办?这意味着您的 DIM 和 FACT 粒度不一致。此外,您的销售 table 可以指出产品及其颜色,但如果产品维度的最低粒度只是产品而没有颜色怎么办?同样,您的 DIM 和 FACT 最低颗粒度也不稳定。

粒度(或事实的粒度)指的是您进行测量的'level'。事实 table 描述了对业务流程的测量,因此描述粒度的最佳方式是描述每一行所获得的结果。超市结账的经典示例是 'one row for every beep/scan'。这比说 'one row for every day, product and store'(即命名维度)更好,因为它以现实为基础。

grain/level 元素是您可能将行存储在产品级别,或者您可能将其存储在某些产品组中。这很重要,因为它将决定您可以使用产品级维度还是组级维度。