数据探查

接触数据仓库也半年多了,一直都知道数据质量的重要性, 前面也看过几篇数据质量的博文,但是没有真正的在实践中去做过。上周接触了一下数据探查,发现数据探查对于数据质量是非常重要的一个环节,它是决定最后数据正确性的非常关键的一步。   数据探查阶段为ETL团队提供了指导,告诉他们需要使用多少数据清洗机制,并且使他们不会因为创建处理脏数据的系统分散了注意力而遗漏项目的主要环节。一定要预先进行数据探查工作!使用数据探查结果,可以设定业务发起人对于实际开发时间表、源数据的局限性和对更好地源数据捕捉方法进行投资的需求等的期望。

        在启动主数据管理项目之前,需要了解数据的内容、质量和结构。在数据源进行的数据探查使数据管理员和数据仓库管理员能够在数据进入主数据管理项目之前,快速发现和分析跨所有数据源的所有数据异常,此流程可极大加快从主数据管理项目实施中获取价值。

        由于数据清洗增强了数据的准确度,带来了数据完整性,并从源头增进了数据的可信度,因此数据清洗改善了主数据管理项目系统中的数据一致性。

     “数据探查、数据质量和数据集成是三个搭配使用的商业惯例,就像面包、黄油和果酱⋯⋯。数据管理专业人士及其商业对手需要协调工作并设计有效结合所有这三个惯例的项目。”

从上图可以发现,

数据探查在数据质量流程中的位置。我们从源系统中查询到各种数据,然后对数据进行分析和探查,而数据清洗过程将利用数据探查的结果进行有效的清洗,最后达到数据集成,以提供正确的数据。

本次用到的具体的数据探查语句:

1.Null值统计

  • selectcount(*)总记录数
           round(sum(decode(A,null,1,0)) /count(*) * 100,2from t

2.主键ID长度的统计

selectdistinct (length(A))from t

3.码表或者状态值的数量的统计

    码表类型名称及其每个类型下数据量的统计


项目中,我们需要给其他系统对抽表数据,对抽表的数据就是将源表中的数据,完全对抽到目标表中。这个过程本来觉得很简单,直接将数据抽取过去就可以了,但是后来发现不是那么回事,你要对你送出的数据负责。

       这些数据到底是什么数据?这些传过去的数据是否正确,业务含义是什么,表的用处是什么?表中某个字段的字段结构是什么,等等这些都要知道。

        1.源表的数据量的统计          

           select   count(*)  as 总记录数 from t
        2.源表字段空值的统计

           select round(sum(decode(A,null,1,0)) /count(*) * 100,2  from t

        3.源表字段的业务含义是什么

           比如一个表中有inputdate,有datadate,那这时候你就要去探究了,这两个字段到底都是什么业务含义,他跟增量规则是否有关。

        4.源表字段的数据格式

          比如一个表中有Inputdate字段,这个字段就是增量时间戳字段,在做增量加载时,是采用 where inputdate =date  '业务日期'   还是采用where inputdate=trunc('业务日期),这时候就要看inputdate中存放的数据的格式了。如果有时分秒,则需要用后者,否则用前者。

          还有金额字段,是否有小数位等等。

        5.增量规则

           我们一般采用的增量规则方式为时间戳方式。这时,对于一个表,就要探查它是业务源表,还是SGA层表?如果为sga层表,那么这个表是日增量表还是日全量表,如果为日增量表,那么它的增量规则是什么?

        6.是否符合需求

           这个大方向一定要把握好。源数据-->数据仓库,数据仓库提供接口数据--->A系统。不但要把表中的数据探查清楚,还要通过探查数据,看传过去的数据是否符合A系统的需求。

 

         数据探查使数据质量中关键的一步,要认真做好这一步,才能真正把控数据来源,减少返工。

只是意识到了对于表内数据的探查,即表内数据量、空值、关键字段、类型、数据格式等的探查,而没有站在更高的角度去想数据探查。

 

        数据探查,是在拿到需求后,首先从战略上去探查确定候选数据源,即去探查会涉及到哪些源系统,涉及到源系统中的哪些表,对于系统中涉及到的表结构,表内数据,表与表之间的关系(一对一,多对一,一对多等),及其选定的数据源是否适合包含在数据仓库中,而我所理解的数据探查只是在选定了数据源之后的更细的数据方面技术性的探查,具体见数据探查(一)  和数据探查(二)

 

    数据探查是对数据的技术性分析,对数据的内容、一致性和结构进行描述。

    数据探查担负着两种不同的任务:战略性的和战术性的。

    战略性:一旦确定了某个候选数据源,就应当进行一次轻量级的探查评估来确定该数据源是否适合于包含到数据仓库中,针对早期的采纳/不采纳问题提供决策。理想情况下,应当在业务需求分析过程中确定出一个候选数据源之后立即进行战略性评估。较早地找出那些不合格的数据源是一个责任重大的步骤,即使带来的是坏消息,也是必要的一步。如果很晚才发现数据源无法支持要做的工作,对DW/BI团队的积极性将产生重大的打击,特别是当项目已经展开数月之后才发现数据源存在问题时更是如此。

    战术性:一旦将某个数据源引入项目的基本战略决策已经定下来,就需要进行一系列战术性的数据探查工作来尽可能多地确定出各种问题。通常这一工作从数据建模过程就开始了,一直到ETL系统设计过程。有时ETL团队也可能需要使用一个其内容没有经过彻底评估的数据源。系统也可能支持产品过程的需求,但是却存在ETL方面的难题,因为对产品处理并不重要的字段用来进行分析也是不可靠和不完整的。该子系统中揭示出来的问题最终会产生两种详细说明:1)将数据送回原来的数据源中,请求改善数据质量;2)构成了数据质量子系统的需求。

   

    总结:探查阶段是建设DW模型的基础,也是ETL设计的基础,唯有做好数据探查才可以使得DW的工作更加顺畅。

          探查阶段为ETL团队提供了指导,告诉他们需要使用多少数据清洗机制,并且使他们不会因为创建处理脏数据的系统分散了注意力而遗漏项目的主要环节。一定要预先进行数据探查工作!使用数据探查结果,可以设定业务发起人对于实际开发时间表、源数据的局限性和对更好的源数据捕捉方法进行投资的需求等的期望。


### ArcGIS 数据探查功能使用教程 ArcGIS 提供了强大的数据探查功能,用户可以通过这些功能对地理数据进行可视化、分析和管理。以下是对 ArcGIS 数据探查功能的详细介绍以及如何使用这些功能的具体方法。 #### 1. 数据探查的基本概念 数据探查是通过可视化和统计分析的方式了解数据的分布、属性和特征的过程。在 ArcGIS 中,数据探查功能主要集中在以下几个方面: - **空间数据可视化**:通过地图展示矢量数据(点、线、面)和栅格数据。 - **属性数据分析**:通过表格和图表分析地理要素的属性信息。 - **空间关系分析**:识别要素之间的拓扑关系、距离关系等。 - **统计分析**:计算数据的均值、方差、最大值、最小值等统计指标[^1]。 #### 2. 使用 ArcGIS 进行数据探查 以下是使用 ArcGIS 进行数据探查的具体步骤和方法: ##### 2.1 矢量数据探查 矢量数据探查主要涉及点、线、面数据的可视化和属性分析。以下是一些常用的功能: - **加载数据**:将矢量数据(如 Shapefile 或 Feature Class)加载到 ArcMap 或 ArcGIS Pro 中。 - **符号化**:根据属性字段对数据进行符号化显示,例如按类别或数值范围着色。 - **查询和选择**:使用 SQL 查询或空间选择工具筛选特定的数据子集。 - **属性表查看**:打开属性表以查看和编辑要素的属性信息。 - **空间关系分析**:使用工具如“缓冲区”、“叠加分析”等探索要素之间的空间关系。 ##### 2.2 栅格数据探查 栅格数据探查主要用于遥感影像和数字高程模型(DEM)的分析。以下是一些常用的功能: - **加载数据**:将栅格数据(如 TIFF、IMG 文件)加载到 ArcMap 或 ArcGIS Pro 中。 - **重采样和裁剪**:调整栅格分辨率或裁剪到特定区域。 - **直方图分析**:查看栅格数据的像素值分布情况。 - **分类**:使用监督分类或非监督分类方法对遥感影像进行分类[^3]。 - **三维可视化**:对于 DEM 数据,可以生成三维地形模型以更好地理解地形特征。 ##### 2.3 统计分析 ArcGIS 提供了多种统计分析工具,用于总结和描述数据的特征: - **汇总统计数据**:计算字段的均值、标准差、最大值、最小值等。 - **频率分析**:统计每个唯一值的出现次数。 - **空间统计**:分析数据的空间分布模式,例如聚类分析或热点分析[^1]。 #### 3. 示例代码:使用 Python 探查矢量数据 以下是一个简单的 Python 脚本示例,展示如何使用 ArcPy 模块探查矢量数据的属性和几何信息: ```python import arcpy # 设置工作空间 arcpy.env.workspace = r"C:\path\to\your\data" # 加载矢量数据 feature_class = "example_data.shp" # 获取字段列表 fields = [field.name for field in arcpy.ListFields(feature_class)] print("字段列表:", fields) # 获取要素数量 count = arcpy.GetCount_management(feature_class) print("要素数量:", count) # 遍历每个要素并打印其属性 with arcpy.da.SearchCursor(feature_class, ["SHAPE@", "Field1", "Field2"]) as cursor: for row in cursor: print(f"几何类型: {row[0].type}, 属性1: {row[1]}, 属性2: {row[2]}") ``` #### 4. 常见问题与解决方法 - **问题1**:加载数据时提示“无法找到数据源”。 - **解决方法**:检查数据路径是否正确,并确保文件格式兼容 ArcGIS。 - **问题2**:符号化后无法正常显示数据。 - **解决方法**:验证数据的坐标系是否与地图的坐标系一致[^2]。 - **问题3**:统计分析结果不准确。 - **解决方法**:检查数据是否存在空值或异常值,并清理数据后再进行分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值