关于connect by的灵活运用
第一步:创建测试PSCREATE OR REPLACE PROCEDURE etl.test_connectAS --l_begin_date DATE; --l_issue_length NUMBER:=8; CURSOR c_issue_id IS SELECT EW_ISSUE_ID, EW_BEGIN_DATE, TRUNC(EW_END_DATE)-TRUNC(EW_BEGIN_DATE) issue_length FROM cnface.cn_ew_issue_dimt0 WHERE EW_ISSUE_STATUS='biding'; BEGIN FOR r_issue_id IN c_issue_id LOOP INSERT INTO cnface.a SELECT r_issue_id.EW_BEGIN_DATE+a.rn FROM ( SELECT ROWNUM-1 rn FROM DUAL connect BY ROWNUM<=r_issue_id.issue_length ) a; END LOOP; CO
ETL的方法和一般过程
ETL的设计ETL的设计分三部分:数据抽取、数据的清洗转换、数据的加载。在设计ETL的时候我们也是从这三部分出发。数据的抽取是从各个不同的数据源抽取到ODS(Operational Data Store,操作型数据存储)中——这个过程也可以做一些数据的清洗和转换),在抽取的过程中需要挑选不同的抽取方法,尽可能的提高ETL的运行效率。ETL三个部分中,花费时间最长的是“T”(Transform,清洗、转换)的部分,一般情况下这部分工作量是整个ETL的2/3。数据的加载一般在数据清洗完了之后直接写入DW(Data Warehousing,数据仓库)中去。 ETL的实现方法 ETL
数据仓库中维度变化和事实变化的处理方法
. 维度慢慢改变。你的应用必须反映出移植到仓库中的数据源所发生的数据变化。维表中的数据特别容易变化。但你怎么维护记录的历史变化呢? 第一个也是最简单的方法是重写现有的记录而不跟踪变动。幸运的是,这个方法被许多维度所接受。例如,如果一个部门名称从“财务”变为“财务和会计”,你很可能并不需要记录这种历史变化。但是,从客户和学生的角度看,常常有必要保持跟踪姓名、婚姻状态、教育程度和其它属性的变化——你的应用必要能够获得当前的以及历史的数值。 管理维度慢慢改变的第二个方法是数值发生变化时创建一个
ETL难以成功的原因
ETL难以成功有以下几个难点: 1 . 数据仓库的数据来自于多个数据源,所以数据的一致性很难得到保证,很多情况下需要一种硬性的标准来决定数据的取舍问题,如来源于dl_crmcn,dl_ocnsb1,dl_bops,dl_cnweb2 . 数据格式问题,例如数据缺失,超出数据范围,无效数据格式等等。如在member 的gmt_create时间居然有000000000格式的 3 . 出现错误之后没有正确的处理问题,导致数据的质量不断的下降。 4 . 数据一致性问题,处于数据库性能考虑,有时候可能会有意的去掉一些外键或者检查约束。 5 . 业务逻辑问题.由于数据库在最初设计时就不够严格和谨慎
recyclebin(转)
我们都知道,在oracle 10g中有个叫做flash drop的新特性。也就是把删除的表,放进类似回收站的recyclebin中。这样,当你发现drop错表的时候,你可以使用:flashback table tb_name to before drop ;来恢复前一次删除的表。当然,oracle有它自己的对recyclebin空间的回收的办法。本来是件好事,可是由于删除的表很多,产生了大量的recyclebin里的表,感觉很不舒服。同事都让我把recyclebin给禁用了,没有办法只有禁用了。方法如下:%20select">sys@crmdata> select * from v$version;BANNER----------------------------------------
YouTube网站的经营模式
网络视频化将成为互联网的第二次革命,而播客则成为这一革命的代表,是目前最热门的网络媒体之一。国内PSP(播客服务提供商,全称是Podcasting Service Provider)网站的发展,由于带宽窄、模式单一等主客观条件的限制,还处在探索阶段,目前尚未赢利。本文拟以全球PSP网站领头羊——美国YouTube网站为个案,分析PSP网站的发展和经营模式,为国内播客网站的发展提供参考借鉴。 于2005年2月创建的YouTube网站,是典型的PSP网站。2006年6月,YouTube网站市场价值已超过10亿美元,居全球PSP网站第一,其市场份额远超过四大门户网站(Y
Oracle 分析函数使用介绍(转)
分析函数是oracle816引入的一个全新的概念,为我们分析数据提供了一种简单高效的处理方式.在分析函数出现以前,我们必须使用自联查询,子查询或者内联视图,甚至复杂的存储过程实现的语句,现在只要一条简单的sql语句就可以实现了,而且在执行效率方面也有相当大的提高.下面我将针对分析函数做一些具体的说明.今天我主要给大家介绍一下以下几个函数的使用方法1. 自动汇总函数rollup,cube,2. rank 函数, rank,dense_rank,row_number3. lag,lead函数4. sum,avg,的移动增加,移动平均数5. ratio_to_report报表处理函数6.
关于Partition列被更新的问题
一、今天遇到这样一个问题: Error Msg is ORA-14402: updating partition key column would cause a partition change解决办法为: alter table owner.table_name enable row movement;二、SQL> create table ttt(a number) 2 partition by range(a) 3 (partition p1 values less than (10), 4 partition p2 values less than (20)); Table created. SQL> insert into ttt values(1); 1 row created. SQL> commit;
ascii函数和substr函数的用法
一、ascii函数只取给予参数中第一位的asc值SQL> select ascii('nihao') from dual;ASCII('NIHAO')--------------110SQL> select ascii('n') from dual;ASCII('N')----------110二、substr是按字节取字符SQL> select substr('guojun',1,1) from dual;S-gSQL> select substr('guojun',1,2) from dual;SU--guSQL> select substr('郭军哈',1,1) from dual;S-?SQL> select substr('郭军哈',1,2) from dual;SU--郭--因为英文占两个字节,中文占四个字节[@more@]
oracle中ascii函数及to_char函数使用及编码间的转换
一、ascii->charSQL> CREATE OR REPLACE PROCEDURE pasc_to_char(one IN VARCHAR2)2 --RETURN VARCHAR23 AS4 i NUMBER:=1;5 two VARCHAR2(200):='';6 7 BEGIN8 FOR i IN 1..length(one)-19 LOOP10 two:=two||TO_CHAR(ASCII(SUBSTR(one,i,1)));11 DBMS_OUTPUT.put_line(two);12 END LOOP;13 --RETURN two;14 -- DBMS_OUTPUT.put_line(two);15 END;16 /Procedure created.SQL> exec pasc_to_char('guojun');103103117103117111103117111106103117111106117PL/SQL procedure successfully completed.二、 SQL> select to_char(a
flashback table 用法
我们都知道,在oracle 10g中有个叫做flash drop的新特性。也就是把删除的表,放进类似回收站的recyclebin中。这样,当你发现drop错表的时候,你可以使用:flashback table tb_name to before drop ;来恢复前一次删除的表。当然,oracle有它自己的对recyclebin空间的回收的办法。本来是件好事,可是由于删除的表很多,产生了大量的recyclebin里的表,感觉很不舒服。同事都让我把recyclebin给禁用了,没有办法只有禁用了。方法如下:%20select">sys@crmdata> select * from v$version;BANNER----------------------------------------
dbms_metadata.get_ddl的用法
FUNCTION get_ddl ( object_type IN VARCHAR2, name IN VARCHAR2, schema IN VARCHAR2 DEFAULT NULL, version IN VARCHAR2 DEFAULT 'COMPATIBLE', model IN VARCHAR2 DEFAULT 'ORACLE', transform IN VARCHAR2 DEFAULT 'DDL') RETURN CLOB; 1、从数据字典中获得指定用户下的table和index的DDL脚本 set heading off; set echo off; Set pages 999; set long 90000; spool d:ddl_list.sql select dbms_metadata.get_ddl('TABLE','DEPT','SCOTT') from dual; select dbms_metadata.get_ddl('INDEX','DEPT_IDX','SCOTT') from dual; spool off
SQL*PLUS命令的使用大全
Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus语句。 我们通常所说的DML、DDL、DCL语句都是sql*plus语句,它们执行完后,都可以保存在一个被称为sql buffer的内存区域中,并且只能保存一条最近执行的sql语句,我们可以对保存在sql buffer中的sql 语句进行修改,然后再次执行,sql*plus一般都与数据库打交道。 除了sql*plus语句,在sql*plus中执行的其它语句我们称之为sql*plus命令。它们执行完后,不保存在sql buffer的内存区域中,它们一般用来对输出的结果进行格式化显示,以便于制作