联名账户作为常见的金融分析场景,蕴含了复杂的模型关系处理,并不是人人都可以轻松算对。本文从介绍关系开始,深入浅出向您介绍如何处理联名账户这种最常见的金融分析场景。
常见的关系
1)一对一关系
最简单的关系是一对一关系。假设您有一个人的姓名列表和一个身份证号码列表。每个人有且仅有一个身份证号码,每个身份证号码能且仅能对应到一个人。
一对一的关系相对较少,因为往往给定关系的两边都不可能与一个且只有一个对应关系匹配。这是一对一关系的其他示例:
公民和护照的关系(每个人只有一本来自特定国家/地区的护照,每本护照只能供一个人使用。)
国家和国旗的关系(每个国家/地区只有一个国旗,每个国旗仅属于一个国家/地区。)
配偶关系(每个人只有一个配偶。)
2)一对多关系
一种更复杂(但也更常见)的关系是一对多或多对一关系。例如,如果您有一个艺术品清单和一个博物馆清单,则每个艺术品只能一次位于一个博物馆中,但是每个博物馆可以拥有许多艺术品。
同时类似这样关系的例子还有很多,例如:
人员地址(每个人可以住在一个地址,但每个地址可以容纳一个或多个人。)
主人宠物(每只宠物都有一个主人,但每个主人可以拥有一个或多个宠物。)
农民设备(每台农用设备由一个农民拥有,但是每个农民可以拥有许多设备。)
3)多对多关系
最后,实体也可以具有多对多关系。假设您有一个图书清单和一个作者列表,每本书可能有一个或多个作者,并且每个作者可能写了多本书。这时就形成了多对多关系。
并且这种关系看似特殊,但是却很常见,商业活动中存在着许多这类场景,例如:
在医院场景中,每个医生会为多个病人看病,同时病人也会到多个医生处就诊,医生和病人之间就存在多对多关系;
在零售和快餐场景中,每张订单关联多张优惠券,同时优惠券也可以在多个订单中使用,那么订单和优惠券间就存在多对多关系;
在学校场景中,每一名学生会学习很多门课程,同时一门课程会有很多名学生学习,那么课程和学生之间同样存在着多对多关系。
像这类多对多关系还有很多,下文将进一步介绍一些典型的多对多关系场景。
联名账户场景
联名账户是一个非常典型的多对多关系的业务场景:该场景中有一个事实表,该表记录了每个账户的每一笔交易明细,同时,又存在账户信息、客户信息和日期信息三张维度表。典型的模型样例如图所示。
由于存在联名账户,所以一个账户可能对应多个客户,同时一个客户又会对应多个账户。这就为分析提出了更高的要求。例如,我们在样例数据中创建了4个客户和6个帐户。每个帐户都关联一个或多个客户,每个帐户在2005年11月30日的交易金额均1000元。
但是当进行客户层面的统计时,很容易就能发现,每个客户交易金额的小计等于属于其对应账户的交易金额的总和,但是对于总计交易金额,由于仅存在6个账户,每个账户的交易金额均为1000元,所以总计交易金额为6000元,并不是各个客户金额小计的总和。这里需要对重复计算的账户,进行去重计算,这就是多对多关系的特别之处。
实现方式
那么如何处理这种复杂而常见的多对多关系的模型呢?Kyligence产品提供了MDX数据集的建模能力,能够轻松的支持多对多的分析场景。用户仅需通过简单的设置,无需任何代码即可定义多对多关系。仅需进行如下设置,即可完成一对多对多关系的定义。
用户在最终分析时不需要关系底层的数据结构和数据关系,仅需要直接进行拖拽分析即可。
结论
本文介绍了建模时各类表与表间的连接关系,讨论了常见的使用场景。并基于联名账户场景详细的解释了多对多关系计算的重点。即使在大数据时代的今天,这些复杂的场景仍然随处可见,是现代OLAP需要具备的高级建模能力。Kyligence产品能够很好的支持多对多关系,既能够实现海量数据的快速响应,又能支持OLAP分析所需的各种复杂连接关系。如需了解更多,请点击阅读原文,查看详细Demo 视频。