前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何用PowerBI自定义函数批量爬取财务报表

如何用PowerBI自定义函数批量爬取财务报表

作者头像
公众号PowerBI大师
发布2019-10-28 18:03:51
2.9K0
发布2019-10-28 18:03:51
举报

近期,学习了马老师的商业智能财务分析(PowerBI)课程后,不免手痒,教学中的案例数据不过瘾,于是在PowerBI学友的启发下,自己找现实数据玩了起来。那么今天的文章主要内容是怎样从PBI批量爬取在线的财务报表数据。直接进入正题。

1 了解数据源

各大财经网站找了一圈,数据最容易爬取的当选网易财经

资产负债表地址

http://quotes.money.163.com/f10/zcfzb_000333.html

上市公司代码表下载地址(PDF 文件):

http://www.csrc.gov.cn/pub/newsite/scb/ssgshyfljg/201902/t20190212_350821.html

证监会官网找到的所有上市公司明细,可在PowerBI中选择PDF为数据源获取

2 数据导入

1)科目表

2)资产负债表数据

3)上市公司股票代码表

3 数据标准化

由于网易数据源的缘故,财务报表的科目明细和整体数值是分开的,那就分别作为维度表和事实表,都增加索引列,在模型建模建立连接即可。

由于资产负债表数据为二维表,我们需要用逆透视把它变成一维表(提升标题后 - 选中索引列 - 逆透视其他列),再删除掉值中的空值

对于从PDF文件获取的上市公司股票代码表,可删除默认出现的“更改的类型”步骤,因为股票代码有很多以0开头,需要以ABC文本格式才能显示出来。

前三列利用向下填充补充数据

到此单张表的数据清洗工作完成。

4 批量爬取其他公司报表

观察下网址结构,一串文字+股票代码,逻辑简单。那通过“上市公司行业分类表”中的股票代码便可批量导入

第一步,建立参数:取名“Web”

当前值可设置为当前股票代码 000333

第二步,在资产负债表的“查询设置”的源中,将代码中 000333替换为

"&Text.From(Web)&"

即首行公式为

=Web.BrowserContents("http://quotes.money.163.com/f10/zcfzb_"&Text.From(Web)&".html")

第三步,创建自定义函数,取名zcfcb

第四步,在从PDF文件获取的上市公司股票代码表中做筛选,考虑股票代码很多,获取全部数据非常耗时,我们先只筛选前3只股票

选择“添加列”调用自定义函数,增加一列。

字段“zcfcb”的每一个单元格中的Table都是一张完整的资产负债表数据,这种方案是先解决局部,再向上逐一击破,打开表格就是完整的数据。

加载数据后,几张表建立关系。

现金流量表、利润表也照此方法搞定。

5 进一步思考

刚刚Demo的测试,我们只选取了3家公司,一切都很完美,那如果将3500+家上市公司都加载进来,批量爬取将会发生什么?

很慢!在增加了两个数量级之后,PBI爬取数据的软肋就凸显出来,读取网页表格变得非常缓慢,仅资产负债就有将近500万+行数据,全部加载到PBI耗时两个小时,一度让我非常抓狂。

缺失!由于一些不知的原因,在爬取过程中存在一些上市公司的数据缺失,返回的是空表。而且测试中发现有不稳定的情况,同一只股票单独可以抓取到数据,但放在参数里出现了错误。

6 总结

PBI的PowerQuery虽然可以批量读取数据,但它更适合对接数据库,CSV这些确定的数据源。对于获取网页数据,它对数据的结构要求非常高。我们通过案例体验式地学会PowerQuery的特性和功能,但实际工作中对于大范围爬取网页数据的需求,建议尝试其他更专业的爬虫工具。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PowerBI大师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档