ODI就是一个导数的工具,用IMP,EXP加个FTP和定时crontab一样可以实现导数,只不过,odi更加强大,可以实现更多的功能,等你上个项目,当你接口实现不了需求的时候,你就知道要用存储过程了,odi可以刷新执行,定时执行,不同的库数据导给同一个库用来出报表,大致如此,没有必要扣什么数据挖掘,除非售前也归你,向客户兜售ODI,才需要扯一些什么数据仓储,数据挖掘之类的。
oracle的数据加载工具,说白了,就是不同库,或不同用户下的数据传输工具。上网上下载个操作说明,先在本地安装一个ODI,熟悉熟悉操作就行了。
主要有三个工具:
1、Topology manager定义物理和逻辑架构,就是配置不同库的url,sid什么的。
2、Designer进行数据传输的操作(不同库表数据的传输,传输方式很多种(牛B之处))
3、Operator查看数据传输的结果(传输成功,还是失败,失败的原因等等)。
事实表和维表多对一的关系。
比如事实表每条记录对应一次洗衣粉销售行为,其中一个字段为洗衣粉品牌代码;而维表中保存唯一的品牌和品牌代码,两表通过代码关联;这样就可以从品牌的角度对洗衣粉销售进行分析。
其实主要的区别我想是:
事实表是记录你要分析的东西;
维表是你要用来度量你要分析指标的东西;
就是说一个是对象,一个是尺度。
维度:
多维数据集的一种结构特性,是描述事实数据表中的数据的类别(级别)的有组织的层次结构。这些类别通常描述相似成员的集合,用户要根据它们进行分析。
FS表和F表是怎么产生的?
不是ODS层导过来的,是自己手动创建的。
ETL层中:(ODI相当于一个ETL工具)
ODS:直接从数据源表导入所有数据
SDE:产生FS事实表,FS表从其他表中获取数据,用视图实现
SIL:根据FS表和其他与维度相关的表产生F维表
处理完后的数据会形成 DW数据仓库
ODS层接口,主要是完成从各业务源系统到ODS的数据抽取和集成,该过程的原则是尽量保持ODS层的表结构和数据与各业务源系统的表结构和数据一致。
SDE层,是完成从ODS的数据导到数据仓库DW的表的提前步骤。从ODS的数据到DW前,都会在先加载到SDE层的临时表,然后在SIL层的时候再导入DW表。
SIL层将数据从SDE临时表里加载到DW表,其中事实表在SIL过程中,需要把对应的维度字段转换成维表生成的代理键。
(一下过程不涉及SDE和SIL)
创建主资料库->创建工作资料库(->创建源数据库和目标数据库)->创建数据服务器(在物理体系结构模块下)->创建物理方案->创建逻辑方案(可单独创建或者创建物理方案时自动创建)->创建表->创建模型->逆向工程模型->创建项目->导入知识模块->创建接口->映射、快速编辑、流(上下文Global)->执行
这其中会涉及到ODI的操作,先由设置物理层和逻辑层,物理层是和数据源的JDBC URL关联,逻辑层和物理层一一对应其命名一般都保持一致,转到模型新建模型,每个模型和一个逻辑层关联,新建反向表,反向表是不含数据的表结构,反向表弄好后转到项目,新建文件和接口,再就是在关系图中将源表和目标表映射起来,这些表需要从模型中拖来再在流中选择目标表选择 IKM SQL control append 将truncate设为是。建立好接口后执行接口将数据跑到目标表中。整个过程完成。详见10GODI\Oracle Data Integrator.doc和11G ODI\浙江电子口岸BI项目_ODI操作手册.doc ODI\Oracle__Data_Integrator的使用教程.doc。
逆向工程的实质就是通过刚才建立的逻辑和物理方案连接到数据库,将源表和目标表的表结构等信息(源数据)导入到模型中。
只导入了源表的结构信息,源表数据是怎么通过执行接口就迁移到了目标数据表中呢???
源表通过逻辑架构迁移到了目标数据表中,一个模型中会有一个对应的逻辑架构
通常来说一个接口的迁移过程中,应该至少包含LKM和IKM知识模块,LKM负责将数据从源表装载至临时区域,IKM负责将数据从临时区域再整合进入目标表。
增量过滤器
>=TO_DATE(‘#BI_CLAIM_LAST_EXTRACT_DATE_VAR‘,‘YYYY-MM-DD‘)
WID
一般由对应表的序列的nextval值
1. 缺少某个字段,会提示某个字段不存在
2. LKM选择问题修改后删掉同义词,会提示数据库连接出错(ORA-02019: connection description for remotedatabase not found)
3. FULL表中TRUNCATE属性设置为是;FLOW CONTROL设置为否,否则会在delete previous出错
4. name isalready used by an existing object,删除和表名相同的同义词
5. invalidrelational operator,过滤器里面缺少条件或者符号(>=)
6. 0 : 08S01: com.microsoft.sqlserver.jdbc.SQLServerException: 不支持此服务器版本。目标服务器必须是 SQL Server 2000 或更高版本。原因是字段为空?
7. 2287 :42000 : java.sql.SQLException: ORA-02287: sequence number not allowed here
8. 936 :42000 : java.sql.SQLException: ORA-00936: missing expression
是因为缺少主键
9. 942 :42000 : java.sql.SQLException: ORA-00942: table or view does not exist
错误原因是创建表出错,找到建表的步骤即找到第二步,查看执行,发现错误原因如下
10. 当有很大的数据量时将下面策略设置为NONE可加快速度
11. 1747 :42000 : java.sql.SQLException: ORA-01747: invalid user.table.column,table.column, or column specification
IKM的选择问题
12. 接口执行错误
原因是开启了 FLOW_CONTROL
SQL的内连接与外连接
http://blog.163.com/cs_mayong/blog/static/9581317120096595410120/
http://blog.csdn.net/yiluoak_47/article/details/7449590
1)左连接:Left Join 或Left Outer Join
左连接的结果集包括LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值(Null)。
2) 右连接:Right Join 或Right Outer Join
右连接和左连接相反,它将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值(Null)。
3) 完整外部联接:Full Join 或 Full Outer Join
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。
另一种方式"(+)"所在位置的另一侧为连接的方向
总之,
左连接显示左边全部的和右边与左边相同的
右连接显示右边全部的和左边与右边相同的
PLSQL
select sysdate ,‘公司‘ dimension_namefrom dual;
原文:http://blog.csdn.net/lzflydream/article/details/20570813