• 每日博客


    企业发票异常分析

    一、数据说明:

    1、数据组成

    (1)增值税发票数据,文件名zzsfp

    (2)发票对应货物明细数据,文件名zzsfp_hwmx

    (3)企业信息,文件名nsrxx

    2、数据字段说明

    1zzsfp表字典

    字段名称

    字段含义

    数据类型

    备注

    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

     

    2zzsfp_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)

     

    3nsrxx

    字段名称

    字段含义

    数据类型

    备注

    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)个人上网查阅企业异常信息数据标准;

    3、处理结果入库:

       将上述异常标准的结果分别汇总统计,并将结果数据导出到mySQL数据库中。

       最终结果参考提示:

              最终给出的数据情况

    企业总数:33,829

    非正常企业总数:318

    4、数据可视化展示:

       利用Echarts将上述统计结果以图形化展示的方式展现出来:饼图、柱状图、地图、折线图等。

    三、    测试报告:

    1、    按照测试题目顺序,将实验步骤说明和结果截图存储到答题纸上。

     

    过程

    1. 导入hive

    (其中之一)

    create table nsrxx (

    nsr_id String,

                             hydm String,

                             djzclx_dm String,

                             kydjrq String,

                             xgrq String,

                             label String

    ) ROW format delimited fields terminated by ',' STORED AS TEXTFILE;

    2. 数据去重

    (其中之一)

    DELETE FROM zzsfp

    WHERE fp_nid IN

    (SELECT fp_nid FROM

     (SELECT fp_nid FROM zzsfp GROUP BY fp_nid HAVING COUNT( * ) > 1) a)

    AND id NOT IN(SELECT MIN(id) FROM

    (SELECT MIN(id) AS id FROM zzsfp GROUP BY fp_nid HAVING COUNT( * ) > 1) b);

    1. 3.      去括号

    (其中之一)

    update zzsfp set fp_nid=replace(fp_nid,'(','') ;

     

    1. 4.      导入mysql

    (其中之一)

    bin/sqoop export --connect jdbc:mysql://localhost:3306/doc_system

    --username root

    --password fx30001225

                                --table nsrxx

    --num-mappers 1

    --export-dir  /user/hive/warehouse/nsrxx/nsrxx.txt

    --input-fields-terminated-by ","

    1. 5.      xfxf_id,je,se,gfgf_id,je,se)表,查各公司总支出收入。

     

     

    1. 6.      分别补充xfgf表中互相所没有的企业idjese默认为0,再建cjn_id,cj)表查收入支出差价。

    (其中之一)

    INSERT INTO gf(gf_id)SELECT xf_id FROM xf

    WHERE NOT EXISTS(SELECT*FROM gf WHERE gf.gf_id=xf.xf_id)

     

     

    1. 7.      fp_xn_id,cs,fp_g,fp_all查各公司未作废发票总数。

    CREATE TABLE fp_x AS

    SELECT xf_id as n_id,COUNT(fp_nid) AS cs FROM `zzsfp`

    WHERE zfbz='N' GROUP BY xf_id;

    CREATE TABLE fp_g AS

    SELECT gf_id as n_id,COUNT(fp_nid) AS cs FROM `zzsfp`

    WHERE zfbz='N' GROUP BY gf_id;

    CREATE TABLE fp_all AS

    SELECT fp_x.n_id as n_id,fp_x.cs+fp_g.cs AS cs FROM `fp_g`

    JOIN fp_x ON fp_x.n_id=fp_g.n_id

     

     

     

    1. 8.      fp_csn_id,cs),fp_cs_gfp_cs_all查各公司发票作废次数。

    (fp_cs_all建表语句)

    CREATE TABLE fp_cs_all  AS

    SELECT fp_cs.n_id as n_id,fp_cs.cs+fp_cs_g.cs AS cs FROM fp_cs

    JOIN fp_cs_g ON fp_cs.n_id=fp_cs_g.n_id

      

     

     

    1. 9.      将各公司作废发票数与未作废发票数做比。

    CREATE TABLE fpb AS

    SELECT fp_cs_all.n_id AS n_id,(fp_cs_all.cs/fp_all.cs) AS bl

    FROM fp_cs_all JOIN fp_all

    ON fp_cs_all.n_id=fp_all.n_id

    GROUP BY fp_cs_all.n_id

     

    1. 10.  将各公司收支差价与收支做比,求比率。

    cj >= 0,与

    CREATE TABLE cjb AS SELECT

    zcj.n_id AS n_id,

    IF

     (

            zcj.cj >= 0,

            ((zcj.cj * 100 )/ xf.je ),

            (((-1) * zcj.cj * 100 )/ gf.je)

    ) AS bl

    FROM `zcj`

    JOIN xf ON xf.xf_id = zcj.n_id

    JOIN gf ON gf.gf_id = zcj.n_id

    GROUP BY n_id

     

    1. 11.  根据两个表的比率求问题企业,调整比率,直到问题企业数量接近答案。

    SELECT fpb.n_id FROM `fpb` JOIN `cjb` ON fpb.n_id = cjb.n_id

    AND  fpb.bl >= 0.5  AND  cjb.bl >= 0.5

    361条)

     

     

    各种表

     

  • 相关阅读:
    关于react-native遇到Can't find variable: TouchableHighlight
    安卓---app自动更新
    安卓---android:versionCode和android:versionName 用途
    安卓---读取照片---拍照
    运营商如何识别电信诈骗用户
    再要你命3K的任务总结
    连接kettle(6.1)与vm上的apache hadoop(2.6.1)
    如何从数据上知道某个用户即将去香港
    什么是撼动社会的产品?
    与Y哥的谈话。
  • 原文地址:https://www.cnblogs.com/hfy717/p/15563524.html
Copyright © 2020-2023  润新知