5.3 企业分析数据集
我们将讨论如何通过企业分析数据集(EADS)来优化分析数据集的创建过程。EADS是可共享的、可复用的、集中化的、标准化的、用于分析的数据集。
EADS做的事情是把成百上千个变量汇总到某些数据表和视图内。这些数据表和视图可供分析专家、不同应用、不同用户来共同使用。EADS的结构可以是一张大宽表,也可以是关联在一起的多张表。
EADS有利于协作,因为每个分析专家都可以共享同样的、一致的数据。EADS把许多维度的指标汇集起来让分析专家直接使用,这简化了数据的获取过程。分析专家们再也不需要从第三范式的原始数据表里创建这些指标了。EADS显著减少了分析时间,开发完成后还可被多次使用,如图5-7所示。
图5-7 企业分析数据集流程
EADS最重要的一个优点是保证了不同分析工作的数据一致性,人们最初往往想不到这一点。企业使用一致的数据进行分析,这意味着不同分析主题所使用的指标都是按相同指标计算出来的,这让用户很放心。恰当地使用企业分析数据集,项目准备时间能从总项目时间的60%~80%降低到一个比较低的水平,甚至降低为原来时间的20%~30%。企业分析数据集的关键特性包括以下几点。
■ 一个标准数据视图可以支持不同的分析任务。
■ 一种能显著加快数据准备过程的方法。
■ 一种为分析流程提供了更高一致性、更精确、更具可视性的数据的方式。
■ 除了使用高级分析流程之外,一种帮助应用程序和分析专家开启新视图的方式。
■ 可以让分析专家专注于分析本身。
5.3.1 什么时候创建企业分析数据集
假如你要在某一个业务领域做大量的分析,且分析还会越来越多,那么你就应该创建企业分析数据集。你可以在你专注的分析领域为任何实体创建EADS,包括客户、产品、区域、雇员以及供应商等。任何需要定期分析的实体都是EADS潜在的创建目标。EADS会随着时间变化。如果接入一个新的大数据源,包含新信息的属性和指标就可以添加到EADS中。
创建企业分析数据集需要时间与成本。不要被这些吓到!要知道企业分析数据集可以帮助企业节省大量工作时间与设备成本,节约的成本将远远超过创建的成本。第6章中的简易建模理念就是一个实例,如果没有EADS,就很难实现快速建模所需的敏捷分析。
创建一个有效的企业分析数据集,需要跨职能、跨领域的团队协作。业务团队要定义业务分析所需的各类指标,分析团队要开发处理程序来生成这些数据,IT团队则需要维护企业分析数据集架构,并在生产环境下部署并执行数据处理任务。只有三方共同努力才能最大化EADS的价值。下一节我们会更深入地讨论这个协作过程。
5.3.2 企业分析数据集里有什么
企业分析数据集的设计并不复杂。首先,要收集并汇总各个分析专家常用的各种属性和指标。如果某一个业务指标有多种定义,最好把它们全部合并。例如,也许有些分析专家使用总销售收入减去折扣与返点,有些分析专家使用总销售收入减去折扣,不减去返点。把这两种销售收入指标都包含在EADS内,没有必要只选择其中一种。随着时间推移,如果发现了新的关键指标,那就将它加入EADS内。企业分析数据集一直在不断地变化。最初EADS也许只有一两个指标,但随后越来越多的指标会被添加进来。
全部选中!
很多时候,当你作出选择时,你很难有机会说“我全要了”。企业分析数据集就给了你这种机会。把每一种指标都包含进来,这样可以覆盖所有的需求。添加一个新指标并不会耗费你太多的资源。不要争论哪个指标更准确更合适,全部选上吧,不管哪个指标最终赢了,你都有相应的数据。
企业分析数据集通常不会包含分析专家所需的全部数据,理解这一点非常重要。通常情况下,EADS可以提供90%左右的数据,每一个项目都需要一些自定义的、不经常使用的指标,这些指标通常没有包含在EADS中,这并不是问题。
例如,某一个分析专家研究节假日哪些产品卖得最好。这项分析只会研究少数特定产品。EADS中的数据可能是这些畅销产品按类别汇总的销售指标。对单个产品进行分析并不是常见的需求,所以单个产品的指标就不应该加入EADS中。
企业分析数据集能满足分析专家80%~90%的数据需求,分析专家可以把重点放在剩下10%~20%的个性化数据上。分析专家也可以复用EADS的数据生成程序和处理逻辑。随着时间推移,分析专家也许又发现了一些新的数据指标,这些数据需要保持一致并要重复地生成。如果出现了这种情况,把这些新指标加入EADS。这要需要建立一个管理流程来处理这些新加入的指标。
5.3.3 逻辑结构与物理结构
之前我们讨论过,企业分析数据集逻辑上是每个实体拥有一行数据,包括了该实体的十几个、几百个甚至上千个属性和变量。如果你熟悉那些“老派”的扁平文件,你就会发现这两者有些相似。从物理结构上看,如图5-8所示,EADS的存储格式也许并不像我们刚才描述的那样。
图5-8 EADS的逻辑视图与物理视图
从逻辑上来看,一个围绕客户实体的EADS包含了客户的销售信息、人口统计信息以及直邮营销的反馈信息。但在物理上,这些信息可能保存在不同表中,也许某张表保存了销售信息,另一张表保存了人口统计信息,还有一张表保存了直邮营销反馈信息。
用户不需要担心这种现象,只要有正确的属性和指标,管理数据库的人自然会找到最合适的方式来保存这些数据。然后,人们会建立一个视图来帮助用户从这些物理表中找到自己想要的数据。
5.3.4 更新企业分析数据集
把EADS保存在不同物理表中的主要原因是由于数据更新。不同类型的数据,如调研数据、销售数据、人口统计信息等,都有不同的数据更新周期。也许销售收入类数据需要每天更新,人口统计类数据每季度更新一次,调研数据则一旦获得了新数据就需要更新。当完成了新的市场调研活动,调研数据就需要导入进来,之后就不用更新了。
这就是把不同的数据存储在不同物理表的原因,可以对每类数据进行独立的数据更新。把数据存储在一张大型表格中,每次只更新大表里的部分数据,这种方式会耗费更多的系统资源。此外,通过这些独立的表或视图,分析专家也更容易获得所需要的特定数据。最后,不少数据库都限制了一张表内列的数量。对一个大型的企业分析数据集来说,仅仅为了符合列数的限制,就不得不把数据分布到不同表中。
请注意,不管EADS物理上是怎样存储的,通过视图就能把各个表里的数据汇集起来供人使用。可以建立一个包含销售收入与调研信息的视图,另外一个视图包含调研与人口统计信息,然后第三个视图包含全部信息。如果系统导入了新的数据源,例如社交网络数据或网络数据,基于这些新数据源开发的属性和指标也会加入到企业分析数据集中。添加新数据的方式可以是对视图进行更新,也可以是其他方式。
5.3.5 汇总表还是概要视图
分析数据集的一种实现方式是建立一个汇总表,汇总表按时间表定期更新。这些以汇总表为基础的企业分析数据集有以下好处。
首先,你实现了真正意义上的“计算一次,多次使用”。分析专家所造成的系统资源负载会少一些,因为这种方式避免了分析专家重复执行多表之间的关联聚合操作。关联和聚合这些大型的表只需要批处理一次,其结果就可以被所有人共同使用。
其次,许多高级分析会大量使用历史数据,某一部分数据稍微“过时”不会造成很大的影响,例如,企业也许每天夜里或仅每周一次对销售数据进行更新。对于大多数高级分析项目来说,这是可以接受的。许多指标都是累加值,某一次数据对指标不会有很大的影响。例如,使用一年数据来计算客户平均的单次购买量,这个指标不会因为今天的销售数据没计入计算过程就发生了巨大的改变。
最后,分析专家可以很快地获取他们想要的数据。EADS表已经建立好了,分析专家直接使用就可以了,不需要运行复杂的查询语句,这些数据直接就可以进行分析。
以汇总表为基础的分析数据集也存在一些缺点。首先,分析数据集中的表格通常不会包含最新的数据。其次,EADS会占用系统的磁盘空间,占用比例还有可能很高。最后,需要建立针对不同数据内容的数据更新计划和执行方案。
第二种实现方式是建立一系列的概要视图来实时生成EADS。它有不少优点:首先,企业分析数据集里的数据永远是最新的。其次,如果实时或者准实时分析很重要,那么把最新的数据提供给分析专家就非常关键。最后,企业数据集的任何更新都能快速完成,当视图一旦更新完成,使用视图的所有用户就能立刻得到更新过的最新数据。
只做需要做的事情
你需要决定以什么样的频率来更新企业分析数据集。你也需要决定,是以物理表、逻辑视图还是同时使用两种方式来存储你的EADS。根据事实来做决定,收集到的需求会告诉你哪条路更合适你。许多情况下表和视图都会同时存在。
视图类型的EADS同样也存在缺点。首先,系统负载会加重。这是因为,每个视图都会有很多分析专家来使用,而每一次使用都需要重新运行视图的处理逻辑,这会带来更多的系统负载。其次,这也确保了计算结果的一致性和透明度。最后,因为数据没有提前准备好,而是根据指令从最新细节数据中计算生成,因此分析专家将需要等待更长的时间。
在许多情况下,在EADS结构中同时使用表和视图是合理的。有些数据也许必须使用最新的数据,另外的一些数据对时限性要求没那么高。不同数据源适合不同的方式。使用汇总表还是概要视图需要基于分析需求、性能要求和存储空间的限制。
使用汇总表时需要对存储空间进行限制。不要使用存储比例或其他类似的指标,而是使用基于物理表的视图来进行计算。例如,EADS里有总销售收入与交易次数,那么就没有必要储存平均每次交易的收入这个指标。建立一个视图,把总的销售收入除以交易次数,就获得了想要的指标,这只会消耗很少量的系统资源,但是却能节省大量存储空间。
5.3.6 分享财富
当企业级分析数据集部署好时,企业应该尽量多使用这些数据。EADS不应该只被分析专家使用。商业智能和报表环境,以及这些环境的用户,没有任何理由不使用EADS。如果EADS已经开发好了可用的属性与指标,为什么还在要报表环境里开发处理逻辑来重复计算呢?
类似地,所有能从EADS数据中获得好处的应用都应该考虑使用EADS。一个常见例子是客户关系管理系统(CRM),其使用客户域的EADS来加快客户细分的分析流程。EADS内的客户信息可以直接被CRM使用,CRM用户可以直接使用EADS的客户属性来选择客户群体,而不需要在CRM工具中重新进行计算。另一个例子是,使用了客户EADS的呼叫中心可以为呼叫中心客服人员提供用户的各项指标。当客户打入电话时,呼叫中心客服人员的电脑屏幕上会显示客户的大量信息。这些信息,如最近的交易行为,可以帮助客服人员选择如何更好地处理呼叫。
重要的是,EADS有大量有价值的信息,可以避免不必要的工作,显著地提高规范性与透明性,并确保数据一致性。EADS还提供了更快的分析速度与更大的分析可扩展性。同样重要的还有,EADS给其他用户和应用提供了获取客户信息的简易方式,这些用户和应用也许无法通过其他方式来获得类似的信息。