啃书啃书,数据库进阶一点点,ETL概念学习

《Oracle开发实战经验》

视图

  • 视图是不包含任何真实得虚拟表,视图是基于 SQL 语句的结果集的可视化的表。

  • 视图总是显示最近的数据。每当用户查询视图时,数据库引擎通过使用 SQL 语句来重建数据。

  • 数据库只存储视图的定义,而不存放视图相应的数据

    1. 视图可以简化用户的操作
    2. 视图可以使用户能够以多种角度看待同一数据
    3. 视图对重构数据库提供一定程度的逻辑独立性
    4. 视图能够对机密数据提供安全保护
    5. 适当地利用试图可以更加的表达查询
  • 创建视图

    • create [force|noforce] [or replace] view 视图名称 [别名A,...] as 子查询;
      //force 表示创建视图的表不存在也可以创建视图
      //noforce(默认) 表示床i就按试图的表必须存在,否则无法创建
      //or replace 表示视图的切换
      
  • 撤销视图

    • DROP VIEW view_name
      
  • with check option 子句

    • 指定对视图执行的dml操作必须满足“视图子查询”的条件即,对通过视图进行的增删改操作进行"检查",要求增删改操作的数据, 必须是select查询所能查询到的数据,否则不允许操作并返回错误提示. 默认情况下, 在增删改之前"并不会检查"这些行是否能被select查询检索到.
  • with read only:创建的视图只能用于查询数据, 而不能用于更改数据.

  • 连接视图定义:是指基于多个表所创建的视图,即,定义视图的查询是一个连接查询。 主要目的是为了简化连接查询;

    1. dba_views——DBA视图描述数据库中的所有视图
    2. all_views——ALL视图描述用户“可访问的”视图
    3. user_views——USER视图描述“用户拥有的”视图
    4. dba_tab_columns——DBA视图描述数据库中的所有视图的列(或表的列)
    5. all_tab_columns——ALL视图描述用户“可访问的”视图的列(或表的列)
    6. user_tab_columns——USER视图描述“用户拥有的”视图的列(或表的列)
    7. dba_updatable_columns——显示数据库所有视图中的所有列的可更新状态
    8. all_updatable_columns——显示用户可访问的视图中的所有列的可更新状态
    9. user_updatable_columns——显示用户拥有的视图中的所有列的可更新状态
  • 视图的重新编译
    • **语法:**alter view 视图名 compile;
    • **作用:**当视图依赖的基表改变后,视图会“失效”。为了确保这种改变“不影响”视图和依赖于该视图的其他对象,应该使用 alter view 语句“明确的重新编译”该视图,从而在运行视图前发现重新编译的错误。视图被重新编译后,若发现错误,则依赖该视图的对象也会失效;若没有错误,视图会变为“有效”。
    • **权限:**为了重新编译其他模式中的视图,必须拥有alter any table系统权限。
    • **注意:**当访问基表改变后的视图时,oracle会“自动重新编译”这些视图。

序列

  • 序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字)。不占用磁盘空间,占用内存。其主要用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值。

  • CREATE SEQUENCE 序列名
      [INCREMENT BY n]
      [START WITH n]
      [MAXVALUE/ MINVALUE n| NOMAXVALUE]
      [CYCLE|NOCYCLE]
      [CACHE n| NOCACHE];
    
    1. INCREMENT BY用于定义序列的步长,如果省略,则默认为1,如果出现负值,则代表Oracle序列的值是按照此步长递减的。
    2. START WITH 定义序列的初始值(即产生的第一个值),默认为1。
    3. MAXVALUE 定义序列生成器能产生的最大值。选项NOMAXVALUE是默认选项,代表没有最大值定义,这时对于递增Oracle序列,系统能够产生的最大值是10的27次方;对于递减序列,最大值是-1。
    4. MINVALUE定义序列生成器能产生的最小值。选项NOMAXVALUE是默认选项,代表没有最小值定义,这时对于递减序列,系统能够产生的最小值是?10的26次方;对于递增序列,最小值是1。
    5. CYCLE和NOCYCLE 表示当序列生成器的值达到限制值后是否循环。CYCLE代表循环,NOCYCLE代表不循环。如果循环,则当递增序列达到最大值时,循环到最小值;对于递减序列达到最小值时,循环到最大值。如果不循环,达到限制值后,继续产生新值就会发生错误。
    6. CACHE(缓冲)定义存放序列的内存块的大小,默认为20。NOCACHE表示不对序列进行内存缓冲。对序列进行内存缓冲,可以改善序列的性能。
      • cache个数也不能设置太大,因为在数据库重启时,会清空内存信息,预存在内存中的序列会丢失,当数据库再次启动后,序列从上次内存中最大的序列号+1 开始存入cache x个。这种情况也能会在数据库关闭时也会导致序号不连续,如果为了避免跳号问题可以使用nocache来解决。
    7. NEXTVAL 返回序列中下一个有效的值,任何用户都可以引用。
    8. CURRVAL 中存放序列的当前值,NEXTVAL 应在 CURRVAL 之前指定 ,二者应同时有效。
  • 修改序列

    • 必须是序列的拥有者或对序列有 ALTER any sequence权限

    • 只有将来的序列值会被改变

    • 改变序列的初始值只能通过删除序列之后重建序列的方法实现

    • alter SEQUENCE 序列名
        [INCREMENT BY n]
        [START WITH n]
        [MAXVALUE/ MINVALUE n| NOMAXVALUE]
        [CYCLE|NOCYCLE]
        [CACHE n| NOCACHE];
      
    • 工程中不建议系应该数据库对象,Oracle提供的序列修改语句,主要是完成自动增长列的操作。

  • 序列中currval属性,要在执行了nextval属性之后才可以使用

  • 通过数据字典USER_OBJECTS可以查看用户拥有的序列。

  • 通过数据字典USER_SEQUENCES可以查看序列的设置。

    • SELECT SEQUENCE_NAME,MIN_VALUE,MAX_VALUE,INCREMENT_BY,LAST_NUMBER FROM USER_SEQUENCES;
      
  • 删除序列

    • drop sequence t1_seq;
      
  • 自动序列

    • create table 表名(
      	列名 类型 generated by default as identity 
          ([increment by 步长],
          [START WITH n]
         [MAXVALUE/ MINVALUE n| NOMAXVALUE]
         [CYCLE|NOCYCLE]
         [CACHE n| NOCACHE]);
      )
      
    • 删除自动序列对象

    • 自动序列依附于数据表而存在,删除自动序列如果没有加上purge,那么删除后序列依然会保留,必须使用清空回收站的方式才能删除

      purge recycle
      

同义词

  • Oracle的同义词(synonyms)从字面上理解就是别名的意思,和视图的功能类似,就是一种映射关系。本文介绍如何创建同义词语句,删除同义词以及查看同义词语句。

  • create public synonym table_name for user.table_name;

  • 需要管理员权限才可以创建,或者是具备创建同义词的相关条件权限,一般是由sys管理员创建。

  • Oracle同义词有两种类型,分别是Oracle公用同义词与Oracle私有同义词。普通用户创建的同义词一般都是私有同义词,公有同义词一般由DBA创建,普通用户如果希望创建同义词,则需要CREATE PUBLIC SYNONYM这个系统权限。

    • Oracle公用同义词:由一个特殊的用户组Public所拥有。顾名思义,数据库中所有的用户都可以使用公用同义词。公用同义词往往用来标示一些比较普通的数据库对象,这些对象往往大家都需要引用。
    • Oracle私有同义词:它是跟公用同义词所对应,他是由创建他的用户所有。当然,这个同义词的创建者,可以通过授权控制其他用户是否有权使用属于自己的私有同义词。
  • 同义词的作用

    • 多用户协同开发中,可以屏蔽对象的名字及其持有者。如果没有同义词,当操作其他用户的表时,必须通过user名.object名的形式,采用了Oracle同义词之后就可以隐蔽掉user名,当然这里要注意的是:public同义词只是为数据库对象定义了一个公共的别名,其他用户能否通过这个别名访问这个数据库对象,还要看是否已经为这个用户授权。

    • 为用户简化sql语句。上面的一条其实就是一种简化sql的体现,同时如果自己建的表的名字很长,可以为这个表创建一个Oracle同义词来简化sql开发。

    • 为分布式数据库的远程对象提供位置透明性。

    • Oracle同义词在数据库链接中的作用:数据库链接是一个命名的对象,说明一个数据库到另一个数据库的路径,通过其可以实现不同数据库之间的通信。

    • Create database link 数据库链名 connect to user名 identified by 口令 using ‘Oracle连接串’; 
      //访问对象要通过 object名@数据库链名。同义词在数据库链中的作用就是提供位置透明性。
      
  • 同义词的权限管理

    • 与同义词相关的权限有CREATE SYNONYM、CREATE ANY SYNONYM、CREATE PUBLIC SYNONYM权限。

    • 用户在自己的模式下创建私有同义词,这个用户必须拥有CREATE SYNONYM权限,否则不能创建私有同义词。

    • 如果需要在其它模式下创建同义词,则必须具有CREATE ANY SYNONYM的权限。

    • 创建公有同义词则需要CREATE PUBLIC SYNONYM系统权限。

    • img

    • CREATE [OR REPLACE] [PUBLIC] SYNONYM [ schema.] 同义词名称 FOR [ schema.] object [ @dblink ];
      --专有(私有)同义词
      
      CREATE SYNONYM SYSN_TEST FOR TEST;
      --公共同义词
      
      CREATE PUBLIC SYNONYM PUBLIC_TEST FOR TEST;
      
    • 查看同义词

      • SELECT * FROM DBA_SYNONYMS WHERE SYNONYM_NAME IN ( 'SYSN_TEST','PUBLIC_TEST');
        
    • 使用同义词

      • SELECT * FROM SYSN_TEST;
        
    • 删除同义词

      • DROP [ PUBLIC ] SYNONYM [ schema. ] 同义词名称 [ FORCE ];
        
        DROP SYNONYM SYSN_TEST;
        
        DROP PUBLIC SYNONYM PUBLIC_TEST;--当同义词的原对象被删除是,同义词并不会被删除
        
    • 编译同义词

      • LTER  SYNONYM T COMPILE; --当同义词的原对象被重新建立时,同义词需要重新编译
        
      • 对原对象进行DDL操作后,同义词的状态会变成INVALID;当再次引用这个同义词时,同义词会自动编译,状态会变成VALID,无需人工干预,当然前提是不改变原对象的名称

    • 使用同义词

      • SELECT * FROM SYSN_TEST;
        

oracle伪例

  • rowid伪例

    • 在数据每一行记录保存中,实际上Oracle都会默认每条记录分配一个唯一的地址编号,这个地址编号便是rowid伪例进行表示的,所有的数据都是通过利用rowid进行数据定位的。

      • 数据对象号(data object number)AAAWec
        相对文件号(relative file number)AAG
        数据块号(block number)AAAAC2
        数据行号(row number)AAA
      • 1DDBMS_ROWID.rowid_object(ROWID)从一个rowid取得数据对象号
        2DDBMS_ROWID.rowid_relative_fno(ROWID)从一个rowid取得相对文件号
        3DDBMS_ROWID.rowid_block_number(ROWID)从一个rowid取得数据块号
        4DDBMS_ROWID.rowid_row_number(ROWID)从一个rowid取得数据行号
  • rowrun伪例

    • 表示一个数据行编号的伪例,他的内容是用户查询时,为用户动态分配一个数字(行号)

    • rownum数据伪例前N行查询的方法

    • select * from(
      	select 属性1[,属性2...],rownum rownum 别名
          from 表名 别名
          where rownum<=(currentPage(当前页) * linesize(每条显示记录的行数)) temp
          where temp.rownum 别名 >(currentPage(当前页)-1) * linesize(每条显示记录的行数)
      )
      
  • oracle新特性fetch

    • select [distinct] 分组字段1 [as] [列别名],[分组字段2 [as] [列别名]...]
      from 表名称1 [表别名1],表名称2[表别名 2]...
      [where 条件]
      [group by 分组字段1,分组字段2...]
      [having 过滤条件]
      [order by 排序字段 asc|desc]
      [fetch frist 行数]|[offset 开始位置 rows fetch next 个数]|[fetch next 百分比 percent] row only
      
      • 取前N项记录:fetch frist 行数 row only
      • 取指定范围记录:offset 开始位置 rows fetch next 个数 row only
      • 按百分比取得记录:fetch next 百分比 percent rows only

索引

  • 索引与表一样,也属于段(segment)的一种。里面存放了用户的数据,跟表一样需要占用磁盘空间。索引是一种允许直接访问数据表中某一数据行的树型结构,为了提高查询效率而引入,是一个独立于表的对象,可以存放在与表不同的表空间中。索引记录中存有索引关键字和指向表中数据的指针(地址)。对索引进行的I/O操作比对表进行操作要少很多。索引一旦被建立就将被Oracle系统自动维护,查询语句中不用指定使用哪个索引.

  • 从物理上说,索引通常可以分为:分区和非分区索引、常规B树索引、位图(bitmap)索引、翻转(reverse)索引等。其中,B树索引属于最常见的索引。

  • img

  • B*树(B-tree)索引(默认方式):Root为根节点,branch 为分支节点,leaf 到最下面一层称为叶子节点。每个节点表示一层,当查找某一数据时先读根节点,再读支节点,最后找到叶子节点。叶子节点会存放index entry (索引入口),每个索引入口对应一条记录(key的值、长度、rowid等)

  • create index [用户名.]索引名 on [用户名.]表名 (列名 [asc|desc]...)
    
  • 位图(bitmap)索引:位图索引主要针对大量相同值的列而创建,位图索引通过不同位图取值直接的位运算(与或),来获取到结果集合向量(计算出的结果)。

  • create bitmap index [用户名.]索引名 on [用户名.]表名 (列名 [asc|desc]...)
    
  • 唯一索引/非唯一索引:对某一列或几列的键值(key)是否是唯一的,当某列任意两行的值都不相同时适合创建唯一索引(CREATE UNIQUE INDEX index ON table (column););当表建立Primary Key(主键)或者Unique constraint(唯一约束)时,唯一索引将被自动建立;

  • 对一列或多列建的索引:索引分离于表,作为一个单独的个体存在,除了可以根据单个字段创建索引,也可以根据多列创建索引。Oracle要求创建索引最多不可超过32列。

  • 基于函数(function-based)的索引:基于某些函数索引,当执行某些函数时需要对其进行计算,可以将某些函数的计算结果事先保存并加以索引,提高效率;

    • CREATE INDEX index ON table (FUNCTION(column));
      
    • 函数包括:算数表达式、PL/SQL函数、程序包函数、SQL函数、用户自定义函数。

    • 在WHERE条件语句中包含函数或者表达式时即可创建

  • 组合索引:当两个或多个列经常一起出现在where条件中时,则适合在这些列上同时创建组合索引;

  • 删除索引:

    • drop index 索引名称
      

ETL

  • ETL是将业务系统的数据经过抽取清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。ETL是BI项目重要的一个环节。 通常情况下,在BI项目中ETL会花掉整个项目至少1/3的时间,ETL设计的好坏直接关接到BI项目的成败。

  • 随着信息化建设的不断深入,由于业务系统之间各自为政、相互独立造成的数据孤岛”现象尤为普遍,业务不集成、流程不互通、数据不共享。这给企业进行数据的分析利用、报表开发、分析挖掘等带来了巨大困难。

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SOAQP5ZI-1627986681385)(C:\Users\Sunlight-E3B\AppData\Roaming\Typora\typora-user-images\image-20210803182655056.png)]
  • 为了实现企业全局数据的系统化运作管理(信息孤岛、数据统计、数据分析、数据挖掘) ,为DSS(决策支持系统)、BI(商务智能)、经营分析系统等深度开发应用奠定基础,挖掘数据价值 ,企业会开始着手建立数据仓库,数据中台。将相互分离的业务系统的数据源整合在一起,建立一个统一的数据采集、处理、存储、分发、共享中心。

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f1IVNRJ6-1627986681387)(C:\Users\Sunlight-E3B\Desktop\我的点点滴滴\我的学习\我的学习笔记\typora-user-images\image-20210720115558120.png)]
  • ETL的设计分三部分:数据抽取、数据的清洗转换、数据的加载。在设计ETL的时候我们也是从这三部分出发。数据的抽取是从各个不同的数据源抽取到ODS(Operational Data Store,操作型数据存储)中——这个过程也可以做一些数据的清洗和转换),在抽取的过程中需要挑选不同的抽取方法,尽可能的提高ETL的运行效率。ETL三个部分中,花费时间最长的是“T”(Transform,清洗、转换)的部分,一般情况下这部分工作量是整个ETL的2/3。数据的加载一般在数据清洗完了之后直接写入DW(Data Warehousing,数据仓库)中去。

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wxUggiCq-1627986681389)(C:\Users\Sunlight-E3B\Desktop\我的点点滴滴\我的学习\我的学习笔记\typora-user-images\image-20210720115810927.png)]
  • 商业智能(Business Intelligence,简称:BI),又称商业智慧或商务智能,指用现代数据仓库技术、线上分析处理技术、数据挖掘和数据展现技术进行数据分析以实现商业价值。商业智能描述了一系列的概念和方法,通过应用基于事实的支持系统来辅助商业决策的制定。商业智能技术提供使企业迅速分析数据的技术和方法,包括收集、管理和分析数据,将这些数据转化为有用的信息,然后分发到企业各处。

    • 商业智能能够辅助的业务经营决策,既可以是操作层的,也可以是战术层和战略层的决策。为了将数据转化为知识,需要利用数据仓库联机分析处理(OLAP)工具和数据挖掘等技术。因此,从技术层面上讲,商业智能不是什么新技术,它只是数据仓库、OLAP和数据挖掘等技术的综合运用。
    • 商业智能是对商业信息的搜集、管理和分析过程,目的是使企业的各级决策者获得知识或洞察力(insight),促使他们做出对企业更有利的决策。商业智能一般由数据仓库、联机分析处理、数据挖掘、数据备份和恢复等部分组成。商业智能的实现涉及到软件、硬件、咨询服务及应用,其基本体系结构包括数据仓库联机分析处理数据挖掘三个部分。
    • 为了让数据“活”起来,往往需要利用数据仓库、数据挖掘、报表设计与展示、联机在线分析(OLAP)等技术。
    • 分析有财务管理、点击流分析(Clickstream)、供应链管理、关键绩效指标(Key Performance Indicators, KPI)、客户分析等。商业智能关注的是,从各种渠道(软件,系统,人,等等)发掘可执行的战略信息。商业智能用的工具有抽取(Extraction)、转换(Transformation)和加载(Load)软件(搜集数据,建立标准的数据结构,然后把这些数据存在另外的数据库中)、数据挖掘和在线分析(Online Analytical Processing,允许用户容易地从多个角度选取和察看数据)等 。
  • 商业智能的关键是从许多来自不同的企业运作系统的数据中提取出有用的数据并进行清理,以保证数据的正确性,然后经过抽取(Extraction)、转换(Transformation)和装载(Load),即ETL过程,合并到一个企业级的数据仓库里,从而得到企业数据的一个全局视图,在此基础上利用合适的查询和分析工具、数据挖掘工具(大数据魔镜)、OLAP工具等对其进行分析和处理(这时信息变为辅助决策的知识),最后将知识呈现给管理者,为管理者的决策过程提供支持。

  • 商业智能项目的实施步骤可分为:

    1. 需求分析: 需求分析是商业智能实施的第一步,在其他活动开展之前必须明确的定义企业对商业智能的期望和需求,包括需要分析的主题,各主题可能查看的角度(维度); 需要发现企业那些方面的规律. 用户的需求必须明确.
    2. 数据仓库建模:通过对企业需求的分析,建立企业数据仓库的逻辑模型和物理模型,并规划好系统的应用架构,将企业各类数据按照分析主题进行组织和归类.
    3. 数据抽取: 数据仓库建立后必须将数据从业务系统中抽取到数据仓库中,在抽取的过程中还必须将数据进行转换,清洗,以适应分析的需要.
    4. 建立商业智能分析报表:商业智能分析报表需要专业人员按照用户制订的格式进行开发,用户也可自行开发(开发方式简单,快捷) .
    5. 用户培训和数据模拟测试: 对于开发—使用分离型的商业智能系统,最终用户的使用是相当简单的,只需要点击操作就可针对特定的商业问题进行分析.
    6. 系统改进和完善:任何系统的实施都必须是不断完善的. 商业智能系统更是如此,在用户使用一段时间后可能会提出更多的,更具体的要求,这时需要再按照上述步骤对系统进行重构或完善。
  • 通常的做法是从业务系统到ODS做清洗,将脏数据和不完整数据过滤掉,在从ODS到DW的过程中转换,进行一些业务规则的计算和聚合。

    • 数据清洗:数据清洗的任务是过滤那些不符合要求的数据,将过滤的结果交给业务主管部门,确认是否过滤掉还是由业务单位修正之后再进行抽取。不符合要求的数据主要是有不完整的数据、错误的数据、重复的数据三大类。
      • **不完整的数据:**这一类数据主要是一些应该有的信息缺失。对于这一类数据过滤出来,按缺失的内容分别写入不同Excel文件向客户提交,要求在规定的时间内补全。补全后才写入数据仓库。
      • **错误的数据:这一类错误产生的原因是业务系统不够健全,在接收输入后没有进行判断直接写入后台数据库造成的,比如数值数据输成全角数字字符、字符串数据后面有一个回车操作、日期格式不正确、日期越界等。这一类数据也要分类,对于类似于全角字符、数据前后有不可见字符的问题,只能通过写SQL语句的方式找出来,然后要求客户在业务系统修正之后抽取。日期格式不正确的或者是日期越界的这一类错误会导致ETL运行失败,**这一类错误需要去业务系统数据库用SQL的方式挑出来,交给业务主管部门要求限期修正,修正之后再抽取。
      • **重复的数据:**对于这一类数据——特别是维表中会出现这种情况——将重复数据记录的所有字段导出来,让客户确认并整理。
    • 数据转换:数据转换的任务主要进行不一致的数据转换、数据粒度的转换,以及一些商务规则的计算。
      • **不一致数据转换:**这个过程是一个整合的过程,将不同业务系统的相同类型的数据统一,比如同一个供应商在结算系统的编码是XX0001,而在CRM中编码是YY0001,这样在抽取过来之后统一转换成一个编码。
      • **数据粒度的转换:**业务系统一般存储非常明细的数据,而数据仓库中数据是用来分析的,不需要非常明细的数据。一般情况下,会将业务系统数据按照数据仓库粒度进行聚合。
      • 商务规则的计算:不同的企业有不同的业务规则、不同的数据指标,这些指标有的时候不是简单的加加减减就能完成,这个时候需要在ETL中将这些数据指标计算好了之后存储在数据仓库中,以供分析使用。
  • ETL日志、警告发送

    • ETL日志
      • 执行过程日志,这一部分日志是在ETL执行过程中每执行一步的记录,记录每次运行每一步骤的起始时间,影响了多少行数据,流水账形式。
      • 错误日志,当某个模块出错的时候写错误日志,记录每次出错的时间、出错的模块以及出错的信息等。
      • 总体日志,只记录ETL开始时间、结束时间是否成功信息。如果使用ETL工具,ETL工具会自动产生一些日志.
    • 警告发送
    • 发送警告的方式多种,一般常用的就是给系统管理员发送邮件,并附上出错的信息,方便管理员排查错误。
  • ETL基础概念-过程
    • ETL处理分为五大模块,分别是:数据抽取、数据清洗、库内转换、规则检查、数据加载。各模块可灵活进行组合,形成ETL处理流程。简单介绍一下各个模块之间的主要功能。
      • 数据抽取
        • 确定数据源,需要确定从哪些源系统进行数据抽取
        • 定义数据接口,对每个源文件及系统的每个字段进行详细说明
        • 确定数据抽取的方法:是主动抽取还是由源系统推送?是增量抽取还是全量抽取?是按照每日抽取还是按照每月抽取?
      • 数据清洗与转换
        • 数据清洗:主要将不完整数据、错误数据、重复数据进行处
        • 数据转换
          • 空值处理:可捕获字段空值,进行加载或替换为其他含义数据,或数据分流问题库
          • 数据标准:统一元数据、统一标准字段、统一字段类型定义
          • 数据拆分:依据业务需求做数据拆分,如身份证号,拆分区划、出生日期、性别等
          • 数据验证:时间规则、业务规则、自定义规则
          • 数据替换:对于因业务因素,可实现无效数据、缺失数据的替换
          • 数据关联:关联其他数据或数学,保障数据完整性
      • 数据加载
        • 将数据缓冲区的数据直接加载到数据库对应表中,如果是全量方式则采用LOAD方式,如果是增量则根据业务规则MERGE进数据库
    • ETL有四种主要实现模式:触发器模式、增量字段、全量同步、日志比对
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nuSR3dYa-1627986681390)(C:\Users\Sunlight-E3B\Desktop\我的点点滴滴\我的学习\我的学习笔记\typora-user-images\image-20210720140347345.png)]

kettle

  • Kettle是一款国外开源的ETL工具, 纯java编写,可以在Window、 Linux、Unix上运行,数据抽取高效稳定,Kettle中有两种脚本文件, transformation(转换)和job (作业),transformation完成 针对数据的基础转换,job则完 成整个工作流的控制.

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nrSTZhbm-1627986681391)(C:\Users\Sunlight-E3B\Desktop\我的点点滴滴\我的学习\我的学习笔记\typora-user-images\image-20210720140917039.png)]
  • kettle目录介绍

    • 【Docs】存放Kettle各种语言版本的API文档。
    • 【 Launcher 】存放Kettle Spoon加载的一些配置信息。
    • 【 Lib 】存放Kettle所使用到的第三方jar包。比如:数据库驱动包, 如缺少时需要把对应的数据库驱动包放入此文件夹中。
    • 【 Libswt 】存放Kettle对应不同平台的相关UI jar包。
    • 【 Plugins 】存放Kettle自定义插件时,需要把自定义好的插件打成 jar放在此目录。
    • 【 Pwd 】存放Kettle配置集群时所需要的配置文件与加密文件
    • 【 Samples 】存放Kettle自带的一些Job与Trans实例。
    • 【 Simple-jndi 】存放Kettle使用JNDI方式连接数据源方式的文件 存放目录。目录下的jdbc.properties配置文件中有相应的实例提供 参考。
    • 【 Ui 】存放Kettle初始化使用到的图片及配置信息
    • Input:输入环节
    • Output:输出环节
    • Lookup:查询环节
    • Transform:转化环节
    • Joins:连接环节
    • Scripting:脚本环节
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uyDN99TQ-1627986681391)(C:\Users\Sunlight-E3B\Desktop\我的点点滴滴\我的学习\我的学习笔记\typora-user-images\image-20210720162130716.png)]
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DWIwRwAY-1627986681392)(C:\Users\Sunlight-E3B\Desktop\我的点点滴滴\我的学习\我的学习笔记\typora-user-images\image-20210720162213047.png)]

d 】存放Kettle配置集群时所需要的配置文件与加密文件

  • 【 Samples 】存放Kettle自带的一些Job与Trans实例。
  • 【 Simple-jndi 】存放Kettle使用JNDI方式连接数据源方式的文件 存放目录。目录下的jdbc.properties配置文件中有相应的实例提供 参考。
  • 【 Ui 】存放Kettle初始化使用到的图片及配置信息
    • Input:输入环节
    • Output:输出环节
    • Lookup:查询环节
    • Transform:转化环节
    • Joins:连接环节
    • Scripting:脚本环节
    • [外链图片转存中…(img-uyDN99TQ-1627986681391)]
    • [外链图片转存中…(img-DWIwRwAY-1627986681392)]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羞儿

写作是兴趣,打赏看心情

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值