欢迎来到天天文库
浏览记录
ID:14186852
大小:28.50 KB
页数:7页
时间:2018-07-26
《rank函数在多源数据整理中的应用》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、RANK函数在多源数据整理中的应用 [摘要]在辽河油田勘探与生产技术数据管理系统(简称A1)数据主库建设中,对来自于多数据源的数据,通常存在大量的数据冗余、重复记录或一点多值情况。如何高效识别和区分有效或无效记录,成为影响海量勘探开发结构化数据由专业库到主库入库效率的瓶颈问题,同时也是影响主库数据完整性和唯一性的核心问题。本文对ORACLE系统中RANK函数进行应用尝试,总结分析了RANK函数的使用要点,在实际应用中取得了良好效果。 [关键词]数据整理;ORACLE;RANK分析函数;主键 doi:10.396
2、9/j.issn.1673-0194.2013.15.036 [中图分类号]TP274;TP392[文献标识码]A[文章编号]1673-0194(2013)15-0056-04 1引言 勘探与生产技术数据管理系统(简称A1)及其数据主库建设是中国石油“十一五”信息化建设的重点项目,为确保A1系统主库结构化数据的完整性、准确性和一致性,中国石油发布了统一的EPDM数据模型,为数据建设与管理人员提供了规范的数据标准。在A1系统建设与运维过程中,为减少数据重复录入工作量,数据建设与管理人员对油田公司勘探开发专业数据库
3、已采集入库的海量结构化数据,采用数据迁移技术,由各专业数据库迁移到A1系统数据主库,以实现对物探、钻井、录井、测井、分析化验、地质等专业数据的集中管理和集成应用,更有效地支持勘探开发项目研究工作的开展,保护勘探开发数据资产,提升数据的综合应用价值。 辽河油田勘探、开发领域的不同专业数据,主要来自于辽河油田研究院已建勘探、开发、钻井、录井、分析化验等专业数据库以及各采油厂建立的专业库。分析发现,这些专业库通常具有多数据源、异构、数据关联性弱、数据完整性不足、不同专业间数据一致性差等特征。如何有效地规划、梳理和清洗专业
4、库中的数据,使之符合A1系统主库数据入库标准,是油田数据建设与管理人员面临的难题之一。 在专业数据实际整理过程中,辽河油田数据建设与管理人员借助ORACLE系统提供的RANK分析函数功能,较好地实现了多源结构化数据记录的识别与区分,解决了影响海量勘探开发结构化数据由专业库到A1系统主库入库效率的瓶颈问题,取得了良好的使用效果。下面我们将结合实际应用案例,总结并分析ORACLE分析函数的功能和使用要点,供大家借鉴参考。 2RANK函数的功能 一般认为ORACLE提供的RANK函数就是查询命令中聚合函数下GROUP
5、BY功能的延伸,GROUPBY的功能是查询一个集合的统计信息,比如查询一个部门的总销售额、平均销售额等数据,使用格式为: selectdeptno,sum(sal),Avg(sal)fromempGroupbydeptno;(查询语句一) 查询结果如表1所示。即对部门号为10,20,30的单位,查询其部门的总销售额和平均销售额。注意:一个部门只有一条记录。 但要求查询各部门内部,各员工的销售额排名先后次序时,GROUPBY就无能为力了,这就需要用到ORACLE的分析函数RANK。 RANK的本意是等级,也就是
6、说这是一个给查询数据确定等级的函数[1]。 ORACLE从8.1.6版本开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是,对于每个组可返回多行,而聚合函数对于每个组只返回一行[2](见上面的GROUPBY)。RANK是ORACLE中比较典型的一个分析函数,用它就能对各部门内部各员工的销售额进行排序,其使用方法是: selectdeptno,ename,sal,rank()over(partitionbydeptnoorderbysal)rankfromemporderbydeptno
7、;(查询语句二) 查询结果如表2所示。 从查询结果可以看出,RANK函数给出了各个部门内部,各员工的销售额升序排列的详细列表。从列表中可以清楚地看出,在10号部门内,员工MILLER销售额最低,KING销售额最高等信息。 2.1RANK函数使用的关键点分析 分析函数RANK的语法见图1。 用好RANK函数的关键,是理解partitionby和orderby的运用,笔者认为partitionby之后的字段来划分堆,形成“分堆区”,而orderby之后字段来排序,形成“排序区”,因此,RANK的使用可以分解为:
8、先根据部门号来“分堆”,再根据销售额来“排序”,分两步走,这样就好理解了,这也是ORACLE分析函数的使用关键,即先选择“分堆区”的字段,再选择“排序区”的字段。奇怪的是ORACLE数据库系统对于这样的查询,执行效率还是比较高的,这也便于该类函数的推广应用。 注意:一般在“分堆区”的字段要比“排序区”的字段在范围上大一些,这样便于对表中的数据
此文档下载收益归作者所有