在客户可能随时间执行多个销售订单的业务中,维度模型包含两个表:
假设有一条业务规则,在过去三个月内未执行任何销售活动的客户被视为“不活跃”。在过去三个月内执行过销售活动的其他客户被视为“活跃”。
将源自事实数据本身的“活动状态”列作为维度属性包含在内是一种好的做法吗?如果是,是否也可以作为 II 型 SCD 处理?
或者,这是一个应该推送到分析层的计算(例如通过 DAX 在 power bi 中建模?)应该考虑什么?
一般来说,在维度模型中包含依赖于运行查询时间的物理列并不是一个好的做法(年龄是明显的例子,“活动状态”列是类似的例子)。相反,您可以在视图或 BI 工具中将其创建为计算列。
但是,如果在运行时计算此值的性能太大,那么您可能被迫物理填充该列。对于您的情况,您可以在接收订单时将活动状态设置为 true;但是,要将值设置为 false,您需要运行一个(每日)流程来检查所有活跃状态为 true 的客户,并检查他们的最后一次销售是否超过 3 个月前。