数据清洗规范
1.空值处理:一般使用默认值
1)汇总类指标的空值:空值处理,填充为零。
2)维度属性值为空:在汇总到对应维度上时,对于无法对应的统计事实,记录行会填 充为null。
3)空串例如“ ”,且不是汇总类指标置为null。
数据源存在问题,如果是由人工收集或用户填写而来,很大可能性在格式和内容上存在问题,格式内容问题存在以下几类:
1)时间、日期、数值、全半角等显示格式不一致
这种问题通常与数据源有关,在整合多来源数据时也有可能遇到,将其处理成一致的某种格式即可。
日期统一置为yyyy-MM-dd HH:mm:ss 根据业务需求选择yyyy-MM-dd 与yyyy-MM-dd HH:mm:ss。
注:有的字段类型为datetime 会自动补全,注意转换字段类型。
例如:credit_xycnlyjnxx(信用承诺履约践诺情况信息)字段LXJNQKRDRQ(履行践 诺情况认定日期) 数据格 式为yyyy-MM-dd,需要进行转化。
2)存在不该存在的特殊字符
某些内容可能只包括一部分字符,比如身份证号是数字+字母,姓名等等,最典型的就是头、尾、中间的空格,也可能出现姓名中存在数字符号、身份证号中出现汉字,特殊符号等情况。这种情况下需要找出可能存在的问题,并去除不需要的字符,可以去除左右出现的空格,制表符和其他不必要的特殊符号。如果内容中出现空串或特殊字符,需记录下来,并商讨清洗规则。
3.枚举值处理:统一枚举值信息 ,如性别 男 1 女 2
枚举值和码表值值域范围很小,需要根据经验补全码表,补全的码表需要记录。
4.字段类型处理:比如did字段varchar()
类型统一,注意mysql与hive转换以及区别。
5.注释处理:表名,字段名
目前表中有少部分缺少注释,需要讨论并根据经验定义标准。
6.数据单位统一
例如金额,需要定义与讨论 decimal(?,?)。
7.逻辑错误 ,答非所问,特殊处理,自定义清洗规则
存在数据答非所问情况,如何处理?例如企业名称,录入信息为街道,数字,特殊符号等。使用简单逻辑进行推理就可以直接发现数据问题并进行合适的处理,以防影响分析结果。主要包含以下几个步骤:
姓名写了性别,身份证号写了手机号等等,均属这种问题。 但该问题特殊性在于:并不能简单的以删除来处理,因为成因有可能是人工填写错误,也有可能是数据源没有校验,还有可能是导入数据时部分或全部存在列没有对齐的问题,因此要详细识别问题类型。不好处理,不可以随意删除,故而需要做记录并思考如何处理。
以业务知识或经验推测填充缺失数据。
以同一指标的计算结果(均值、中位数、众数等)填充缺失值。
如果某些指标非常重要又缺失率高,那就需要和取数人员或业务人员了解,是否有其他渠道可以取到相关数据。
数据质量校验分为以下方面:
1.完整性
完整性是指数据的记录和信息是否完整、不缺失。数据的缺失包括数据记录的缺失(表行数异常)和记录中某字段信息的缺失(字段出现空值),检核对象是否存在为空。
2.准确性
准确性是指数据记录中信息和数据是否准确、不存在错误或异常。例如,出现负数,答非所问数据,特殊符号,则明显是错误数据。
对于不同的业务流程和节点,同一份数据必须保持一致性。不可以同一个意义的数据,出现两种形式。
是否满足长度约束,值域约束,检核对象的码值是否在对应的码表内,取值范围,检查对象取值是否在预定的范围内。
5.及时性
及时性主要体现在最终应用层的数据可以及时产出。为保证及时性,需要确保整条数据加工链路上的每个环节都可以及时产出数据。
6.规范性
有没有遵循语法规则定义,时间格式定义为 yyyy-MM-dd。
7.唯一性
唯一性约束,同一客观实体在表中是否重复记录,是否出现两次以上。