企业发票异常分析
1、数据组成
(1)增值税发票数据,文件名zzsfp
(2)发票对应货物明细数据,文件名zzsfp_hwmx
(3)企业信息,文件名nsrxx
2、数据字段说明
(1)zzsfp表字典
字段名称 |
字段含义 |
数据类型 |
备注 |
fp_nid |
发票id |
String |
发票唯一标识 |
xf_id |
销方识别号 |
String |
企业唯一身份标识 |
gf_id |
购方识别号 |
String |
企业唯一身份标识 |
je |
金额 |
Double |
|
se |
税额 |
Double |
|
jshj |
价税合计 |
Double |
|
kpyf |
开票月份 |
String |
|
kprq |
开票日期 |
String |
|
zfbz |
作废标志 |
String |
‘Y’代表作废 |
zzsfp表内容($ less zzsfp)
(2)zzsfp_hwmx表
字段名称 |
字段含义 |
数据类型 |
备注 |
fp_nid |
发票id |
String |
发票唯一标识 |
date_key |
开票月份 |
String |
|
hwmc |
货物名称 |
String |
|
ggxh |
规格型号 |
String |
|
dw |
单位 |
String |
|
sl |
数量 |
Double |
|
dj |
单价 |
Double |
|
je |
金额 |
Double |
|
se |
税额 |
Double |
|
spbm |
商品编码 |
String |
|
zzsfp_hwmx表内容($ less zzsfp_hwmx)
(3)nsrxx表
字段名称 |
字段含义 |
数据类型 |
备注 |
hydm |
行业代码 |
String |
|
nsr_id |
纳税人id |
String |
企业唯一身份标识 |
djzclx_dm |
登记注册类型代码 |
String |
网上可查阅相关代码含义 |
kydjrq |
开业登记日期 |
String |
|
xgrq |
修改日期 |
String |
给企业打标签的时间 |
label |
标签 |
String |
‘0’代表正常企业 ‘1’代表问题企业 |
nsrxx表内容($ less nsrxx)
3、关联数据的必要说明
(1)zzsfp表可通过fp_nid进行关联
(2)zzsfp表可通过xf_id或者gf_id与nsrxx中的nsr_id进行关联,分离出销项发票表和进项发票表
一、 测试要求:
1、数据导入:
要求将三个样表文件中的数据导入HIVE数据仓库中。
2、数据分析:
企业异常的判断标准参考:
(1)企业增值税发票进项与出项严重不符即出现只出不进或者只进不出的企业;
(2)企业发票数据与详细流水信息不符;
(3)个人上网查阅企业异常信息数据标准;
create table eleven1
(nsr_id String)
ROW format delimited fields terminated by ',' STORED AS TEXTFILE;
create table eleven2
(nsr_id String)
ROW format delimited fields terminated by ',' STORED AS TEXTFILE;
insert overwrite table eleven1
select * from (select n.nsr_id
from nsrxx n inner join zzsfp z
on n.nsr_id= z.xf_id
group by n.nsr_id) as form1;
insert overwrite table eleven2
select * from (select n.nsr_id
from nsrxx n inner join zzsfp z
on z.gf_id=n.nsr_id
group by n.nsr_id) as form2;
insert overwrite table eleven3
select count(*) from (select a.xf_id,a.je-b.je as aaa
from eleven1 a inner join eleven2 b
on a.xf_id=b.gf_id) as form1
where aaa>0;
select a
from eleven1.xf_id as a
where a not in eleven2.gf_id b;
create table eleven3
(id String)
ROW format delimited fields terminated by ',' STORED AS TEXTFILE;
create table eleven4
(id String)
ROW format delimited fields terminated by ',' STORED AS TEXTFILE;
create table eleven5
(id String)
ROW format delimited fields terminated by ',' STORED AS TEXTFILE;
insert overwrite table eleven3
select eleven1.nsr_id from eleven1 where eleven1.nsr_id not in (select nsr_id from eleven2);
insert overwrite table eleven4
select eleven2.nsr_id from eleven2 where eleven2.nsr_id not in (select nsr_id from eleven1);
insert into table eleven5
select eleven2.nsr_id from eleven2 where eleven2.nsr_id not in (select nsr_id from eleven1);
3、处理结果入库:
将上述异常标准的结果分别汇总统计,并将结果数据导出到mySQL数据库中。
最终结果参考提示:
最终给出的数据情况
企业总数:33,829
非正常企业总数:318
bin/sqoop export \
--connect jdbc:mysql://master:3306/mysql \
--username root \
--password 000000 \
--table eleven \
--num-mappers 1 \
--export-dir /user/hive/warehouse/eleven5 \
--input-fields-terminated-by ","