PowerBI 金融统计实践系列-人民银行贷款数据抽样篇(1)
前言
根据人民银行相关通知,商业银行需要在2020年6月30之前上报银行在3月份的自身分支机构、财务与资本数据,非同业客户信息,贷款余额和贷款发生额信息,以及担保合同和担保物信息。这一项目数据量大,数据颗粒度细,需要考虑多层次明细与总分校验,任务繁重。
为了完成这一项目,银行统计部门由简单到复杂,依次会考虑到Excel,VBA,SQL server、Oracle等各种传统工具。而微软公司近年来基于最新数据处理技术和用户需求设计而大力主推的PowerBI[1]虽然综合了Excel与数据库工具的许多优点,功能极其强大,但是由于种种原因,并未成为众多金融机构统计部门所熟知的选项。
Power BI早期是需要安装在低版本Excel之中的独立插件,后来演化成Excel高级专业增强版之中的内嵌模块,以及独立软件,如PowerBI Desktop和Power BI企业版;分成Power Query和Power Pivot两大分支,前者主要用于ETL数据抽取清洗和转换,后者用于数据聚合分析,本篇讨论的数据处理全部基于Power Query。
本篇以下主要从报表分析与编制和复核者的角度分享如何使用PowerBI完成该项目,分成三个部分:
-
报表与字段分析,
-
数据抽取和运算,
-
数据转换与校验
1. 报表与字段分析
从人民银行通知和下发报文模版出发,如果对每一张报表的每一个字段,综合分析其各自层级、相互关系和出现频率,那么将为后续的数据抓取、运算、转换和校验打好基础,减少差错和重复工作量。
a) 报表概况
人民银行数据抽样报表一共有七张报表,笔者将其排序如下,其中
l 灰底色的两张金融机构法人和分支机构报表本身字段要求简单,记录条数少,可以依据财务报告或者从其他渠道获得信息,不再赘述。
l 蓝色深浅相间隔的五张客户、贷款与担保物是重点,因为所需要的信息量较大,相互之间勾稽关系复杂,而且部分银行业金融机构可能并没有做好全面对接人民银行抽样标准的技术与数据准备。
b) 数据层级分析
为了更加精准地分析以上五张客户和信贷与担保业务所涉及的各个字段,有必要将报表的所有字段聚合到一个字段表之中,再根据报表主题划分,根据各个字段所属报表、字段名称以及报文要求判断各个字段之间存在多大程度上的依赖关系。
大多数同名字段在各个报文之间应该保持一致,例如“贷款合同编码”字段分别在“存量贷款”、“贷款发生额”、“担保合同”、“贷款担保物”四张报文之中一共出现四次。
类似的,“企业规模”和“企业出资人经济成分”这两个字段各自出现了三次。
其次,数据有不同层级,例如分别在客户与贷款报文之中出现的报送机构“金融机构代码”,属于全金融机构的信息,可以简单的在全局为相关报文的所有数据记录赋值。而上文提及的“企业规模”和“企业出资人经济成分”两个字段属于客户级信息,可以根据客户代码为相关报文的所有数据记录赋值。不过,最细粒度的交易余额与变动信息就只能够在贷款交易级逐笔借据计算。
那么,如何从各孤立报文出发,使用Power Query合并所有字段,然后分级讨论呢?
c) 整合字段列表
Power Query超越VBA和Excel工作表函数的一个显著优点是可以处理嵌套型结构,例如文件夹、子文件夹、Excel工作簿、Excel工作表,工作表之中的数据表、筛选区域都可以被逐层深化处理。
所以,Power Query可以将文件夹之中的所有Excel文件作为一个整体处理,而每个Excel文件除了数据格式之外,文件名、文件类型、数据与内容以及标题,甚至文件夹地址和修改日期都可以展示在二维表之中作为被处理对象。
所以,我们可以从人民银行数据抽取的表样存放的文件夹开始,从以上存储二进制文件的Content列之中深化读取报表模版,然后将报表列标题提取为List列表,然后再展开该List列表。获取报表名称和报表字段两列,最终生成数据透视表按照不同报表和字段展开分析。
核心语句
i. 将Content列之中的二进制文件Binary转化为Table,存储在新增加的sheets列之中
= Table.AddColumn(源, "sheets", each Excel.Workbook([Content], true,true))
ii. 提取以上sheets列之中嵌套的报表内容,即空表表头
= Table.AddColumn(添加列转换表, "字段", each Table.ColumnNames([sheets][Data]{0}))
在下方截图之中,可见每一张报表的列标题已经被提取,接下来点击红色圆圈之中的左右分叉箭头,将导致每一个List在行方向展开,然后就可以得到有报表名称和报表列标题的两列数据表。
iii. 导出数据,进行分析
将以上数据加载到excel工作表之中,然后目视观察,结合业务常识,将每一个字段标注划分到金融机构、客户、贷款交易和担保四级。然后基于字段列表,以前述数据层级为行字段,报文名称为列字段生成数据透视表。
从以上截图中,可以很容易的发现贷款余额与发生额大多数字段名称相同,而名称相同的字段大多数逻辑与数据格式也相同,这样可以迅速深入了解报文数据要求。
[1] 微软官方介绍:https://powerbi.microsoft.com/zh-cn/
银行业Excel商务智能实践者
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)