睿思BI从v5.3开始支持网络爬虫,可以从指定URL抓取表格数据,本示例实现从网络上抓取上市企业招商银行的利润表数据,并在睿思BI中进行展现。
功能演示URL:https://www.ruisitech.com/rsbi-ultimate/#/dashboard/ShareView?token=31f6159469ae4e7b8108f9d66eed5658
首先:从搜狐财经抓取招商银行利润表数据,操作过程如下:
1.在睿思BI系统数据抽取页面,点击加号按钮,选择通过爬虫抽取数据菜单,系统进入爬虫配置页面,如下图:
2.录入招商银行利润表的页面URL,设置编码方式,点击解析网页按钮,结果如下图:
3.选择需要解析的表格数据,点击下一步,进入爬虫数据映射配置页面,如下图:
4.根据数据预览界面中的数据结构,新建数据表,然后配置字段映射、设置任务节点名称、配置完成后,点击执行按钮,把数据抽取到睿思BI系统的表中(此处建的表都是字符字段类型)。
第二步:对抽取的数据进行清洗
1.在数据转换模块,点击加号按钮选择创建JS脚本菜单,编写js代码把字段类型转换成数字类型,代码如下图:
var q12023 = row.get("2023q1");
var q42022 = row.get("2022q4");
var q32022 = row.get("2022q3");
var q22022 = row.get("2022q2");
if(q12023 == '--'){
q12023 = null;
}else{
q12023 = Number(q12023);
}
if(q42022 == '--'){
q42022 = null;
}else{
q42022 = Number(q42022);
}
if(q32022 == '--'){
q32022 = null;
}else{
q32022 = Number(q32022);
}
if(q22022 == '--'){
q22022 = null;
}else{
q22022 = Number(q22022);
}
row.put("2023q1", q12023);
row.put("2022q4", q42022);
row.put("2022q3", q32022);
row.put("2022q2", q22022);
return row;
2.再通过数据转换模块的 SQL脚本功能,编写SQL语句把表的季度字段转换成维度,SQL语句如下图:
select zq, 2023q1 as 'kpi', '202303' as quarter, company
from dw_finance_lrb_changetype
union all
select zq, 2022q4 as 'kpi', '202212' as quarter, company
from dw_finance_lrb_changetype
union all
select zq, 2022q3 as 'kpi', '202209' as quarter, company
from dw_finance_lrb_changetype
union all
select zq, 2022q2 as 'kpi','202206' as quarter, company
from dw_finance_lrb_changetype
3.通过数据填报功能,创建利润表的科目信息,并设置科目的ID,PID,level等字段内容,数据如下图:
直接通过数据填报的批量导入功能,把科目表数据导入系统中。
3.通过数据转换的SQL脚本功能,把利润表和科目表进行关联,sql如下:
select a.kpi, a.company, a.quarter, b.name, b.id, b.pid, b.level
from dm_finance_lrb_kpi a, kemu b
where a.zq = b.name
第三步:对清洗后的数据进行建模
1.主要配置维度和度量,如下图所示:
2.请注意:其中季度是时间维度,维度类型为季度,科目是父子维度,需要在维度中进行配置,界面如下图:
第四步:在仪表盘中展现招商银行的利润表
1.创建交叉表组件,选择刚才创建的立方体,如下图:
2.把科目的一级,二级拖入交叉表的行标签中,把季度放入列标签中,把金额放入季度的下方,如下图:
3.在交叉表属性面板中勾选折叠父子维度,再配置仪表盘的筛选上市企业的参数,最终效果如下图: