一、前言
在金融等数据密集型行业,数据源众多,数据流向也众多。这种现状很容易,几乎是不可避免地导致数据分析和管理混乱。例如,来自不同业务线的分析师会在数据报告中定义自己的财务指标。当你将这些无数的报告汇集到你的数据架构中时,你会发现许多指标在定义上重叠甚至相互矛盾。结果就是,开发一个简单的数据报告将需要来回进行大量的澄清沟通工作,使整个过程变得更加复杂和耗时。
随着业务的发展,数据管理也需要“标准化”的阶段。在数据工程方面,这意味着你需要一个数据平台,可以在其中生成和管理所有指标。这是为提供高效金融服务的架构前提条件。
在这里我们将介绍一个数据库(在本例中为Apache Doris)中金融指标的生命周期,从它们的生成到它们在数据报告中的有效呈现。你将深入了解那些精美的财务仪表盘背后的内幕。
【Apache Doris】:https://doris.apache.org/
二、定义新指标并将其添加到数据库中
从根本上说,指标是表中的字段。为了更具体地说明它们,我将用银行业的一个示例进行解释。
银行通过资产管理量(Assets Under Management,AUM)来衡量客户的资产。在这种情况下,AUM是一个原子指标,通常是源数据表中的一个字段。基于AUM,分析师衍生出一系列衍生指标,例如“年度AUM增长率”、“月度AUM增长率”和“每位客户的AUM”。
一旦定义了新指标,就可以将它们添加到数据报告中,这需要在Apache Doris中进行一些简单的配置:
开发者会相应地更新元数据,注册用于导出指标的基础表,配置中间表的数据粒度和更新频率,并输入指标名称和定义。一些工程师还会监控指标,根据指标评估系统识别异常情况并删除冗余指标。
当指标正确放置后,就可以将新数据导入数据库以获取数据报告。例如,如果导入CSV文件,我们建议使用Apache Doris的流式加载方法,并且每批次的文件大小为1〜10G。最终,这些指标将在数据图表中可视化。
三、计算指标
正如前面提到的,有些指标是通过组合源表中的多个字段来生成的。在数据工程中,这是一个多表连接查询。根据Apache Doris用户的优化经验,我们建议使用平面表而不是星型/雪花模式。在做出这样的更改后,该用户将包含1亿行的表上的查询响应时间从5s缩短到了63ms。
图片
平面表解决方案还消除了抖动。
图片
四、启用SQL缓存以减少资源消耗
分析师经常定期检查相同指标的数据报告。这些报告由相同的SQL生成,因此进一步提高查询速度的一种方法是使用SQL缓存。以下是启用SQL缓存的用例中的效果。
- 所有查询都在10ms内响应。
- 在同时计算30个指标(超过120个SQL命令)时,可以在600ms内返回结果。
- 达到每秒事务处理量(TPS)为300,CPU、内存、磁盘和I/O使用率均低于80%。
- 在推荐的集群规模下,可以缓存超过10000个指标,这意味着可以节省大量的计算资源。
图片
五、结论
金融行业数据分析的复杂性在于数据本身而不是工程方面。因此,底层数据架构应着重于促进数据的统一和高效管理。Apache Doris提供了简单指标注册的灵活性,以及快速和高效的指标计算能力。在这种情况下,用户能够在10000个仪表盘中处理10000个活跃的财务指标,并减少30%的ETL工作量。