我正在尝试在确切的时间点重新创建客户的状态。例如,每个客户都有许多可以随时更改的属性(例如,风险评分、最新账单、客户满意度)。
每次客户提交信用申请时,我都希望在提交时查看所有这些特征的价值。随后,我想使用这些值来开发预测模型。
我的第一个想法是创建一个具有有效和到期日期/时间戳的 Type-2 缓慢变化维度,并使用半开连接 time_effective <= date_of_application < time_expired。
然而,这些属性中的大多数都是行为维度,需要使用事实表中的历史数据进行复杂的计算。此外,计算值也不能使用范围(0-500 美元、500-750 美元等)进行分组。跟踪每个维度的所有这些属性会导致它爆炸。注意:有些值每天都在变化,有些值在任意时间点变化。
我理想的数据提取如下:
- 信用申请ID#
- 提交时间
- 提交时属性 1 的值
- 属性 2 的值...
- 属性 N 的值
除了信用申请之外,还有其他事实表,我想在其中找到在该事件发生时有效的特征。
处理此问题的建议是什么?我看到了几种方法:
- 允许维度爆炸
- 创建具有一个或多个属性的单独表,并分别查询具有我感兴趣的属性的特定表
- 在信用申请事实表中附加一列,其中包含我感兴趣的所有属性的“快照”。
Kimball 的 ETL Toolkit book (pp 190-192) 和他的 Data Warehouse Toolkit book (187-191) 中讨论了其中一些问题。在第 154-157 页,有一个关于“快速变化的怪物维度”的讨论,这似乎非常相关。不过,我在执行这些建议时遇到了麻烦。