小生意
设计和开发的维度模型应该代表业务流程获得的最详细的原子信息。
DW/BI系统几乎总是要求以尽可能精细的粒度来表达数据,这不是因为需要查询单个行,而是因为查询需要以非常精确的方式分割细节。
详细的粒度描述决定了事实表的主要维度。然后,您可以向事实表中添加更多的维度,只要这些额外的维度自然地采用由主维度合并的值。如果附加的维度会引起其他与粒度不一致的事情,那么取消维度或者重新考虑粒度声明。
日期维度表中的每一列都由一行代表的特定日期来定义。星期几列包含一天的名称,如星期一。使用此列可创建报告来比较周一和周日的业务。日期号是日历月列每个月从1开始,根据月份不同到28,29,30,31结束。该列用于比较每月同一天的情况。同样,您可以使用年月数(1...12).所有这些整数都支持跨月或跨年的简单日期计算。对于报告,您需要添加一个长徽标和一个缩写徽标。例如,您希望月份名称属性包含一个值,如1 month。另外,年月(YYYY-MM)列作为报表的表头非常有效。您可能还需要季度编号(Q1...Q4)和年季度属性,如2013-Q1。您可以包含具有相同财务周期但不同日历周期的列。
我理解他的意思是,如果把这些字段提供给用户,用户将无法用SQL查询。我的问题是,实际操作中,内部日期维度会这么大,为什么不直接在SQL日期函数中查询?你不是正好有一个有特殊含义的字段的外键吗?
促销维度可能是零售模式中最有趣的维度。促销维度描述销售商品的促销条件。促销条件包括临时降价、终端渠道展示、报纸广告、礼券等。促销维度通常被认为是因果维度,因为它描述了可能导致产品销售变化的因素。总部和商店的商业分析师都希望能够确定促销是否有效。晋升的判断基于以下一个或多个因素:
因果关系的维度属性是否应该在维度表中?
空外键和空属性的空事实的处理方法
通常,许多销售交易都包括没有促销的产品。顾客不只是把促销产品放在购物车里。当然,你希望他们的购物车里装满全价购买的商品。促销维度必须包含唯一键为0或-1的行,这表示没有促销条件,以避免事实表中的促销键为空。如果将null值放入事实表中已声明为外键的列中,则违反了参照完整性的要求。此外,参考完整性警告,包含空值的键是用户混淆的主要原因,因为它们无法与空值连接。
有时我们可能会在事实表中遇到空值。使事实表非空的方法可以通过聚合函数来处理,如SUM、MIN、MAX、COUNT和AVG。如果用零值替换它,可能会影响聚合计算。
支架表(一种雪花型)
蜈蚣桌
大量的维度通常说明有些维度不是完全独立的,应该合并成一个维度。将同一级别的元素表示为事实表中的不同维度是维度建模中的常见错误。