March 3                                 2012ODITutorialUso da ferramenta Oracle Data Integrator (ODI) paraa construção de ...
Desenvolvimento de ProceduresDepois de configurar a Topologia para o nosso projeto, começaremos agora adesenvolver as inte...
Procedure ou Procedimento como o nome indica, são objetos em que são escritosqualquer tipo de procedimento “extra” que se ...
Criando as tabelas – Modelo ClássicoModelo Data Warehouse ( User/Schema – DW.ORIGEM )--     Tabela TIPO_CLIENTE     CREATE...
-- Tabela GRUPO_ITEM  CREATE TABLE "DW_ORIGEM"."GRUPO_ITEM"   ( "CD_GRUPO_ITEM" NUMBER(*,0) NOT NULL ENABLE,      "NM_GRUP...
Modelo Data Mart ( User/Schema – DW.DESTINO )--     Tabela DIM_CLIENTE     CREATE TABLE "DW_DESTINO"."DIM_CLIENTE"      ( ...
-- Tabela FATO_VENDAS CREATE TABLE "DW_DESTINO"."FATO_VENDAS"   ( "ID_PRODUTO" NUMBER NOT NULL ENABLE,      "ID_CLIENTE" N...
Inserindo Dados – Modelo ClássicoModelo Data Warehouse ( User/Schema – DW.ORIGEM )--   DADOS PARA TABELA TIPO_CLIENTEInser...
Insert into VENDEDOR (CD_VENDEDOR,NM_VENDEDOR,PERC_COM) values (10,Mirna SRIAT,6);Insert into VENDEDOR (CD_VENDEDOR,NM_VEN...
Insert                            into                              FATURAMENTO(NUM_NF,CD_VENDEDOR,CD_CLIENTE,DT_VENDA,TOT...
Insert into    ITEM_ESTOQUE (CD_GRUPO_ITEM, CD_ITEM, NM_ITEM, UNIDADE,   PRECO,QTE_ESTOQUE)   values (4, 31, Caneta esfer....
Insert   into ITEM_NF (NUM_NF, CD_GRUPO_ITEM,   CD_ITEM, QTE_VENDA, VLR_UNITARIO)values   (442, 5, 31, 2, 19.39);Insert   ...
Criando um novo ProjetoA partir desse momento vamos ingressar no Oracle Data Integrator e criar osprocedimentos (Procedure...
Após a criação do projeto, devemos ter essa visão, o próximo passo é renomear apasta chamada First Folder, nesta pasta se ...
Após essas primeiras configurações teremos esse resultado.
Procedure ODI – Criar TabelasVamos agora criar as Procedures no ODI para montagem das nossas estruturas detabelas e para p...
3. Vamos utilizar o campo Command pra montar o código a ser executado. No   nosso projeto iremos utilizar comandos SQL. En...
4. Expanda a pasta das Procedures e clique com o botão direito sob a Procedure   Create-Source-Table em seguida clique em ...
5. Agora abra o ODI Operator. No ODI Operator, click em All Executions, clique   em Refresh e procure a sua sessão, e veri...
7. Depois de validar a criação da Tabela TIPO_CLIENTE, repita os procedimentos   até criar todas as tabelas no ambiente.  ...
Procedure ODI – Carregar TabelasAgora vamos criar as Procedures para carregar os dados nas tabelas, preencha osparâmetros ...
Depois de montar a Procedure, execute e valide as informações através do ODIOperator e Oracle SQL Developer.Nota 6: repita...
Próximos SlideShares
Carregando em…5
×

ODI Tutorial - Desenvolvendo Procedures

1.942 visualizações

Publicada em

Terceiro documento da Série Tutorial Oracle Data Integrator. Neste tutorial demonstro como criar Procedures para criação de tabelas e carga de dados.

Publicada em: Tecnologia
2 comentários
1 gostou
Estatísticas
Notas
Sem downloads
Visualizações
Visualizações totais
1.942
No SlideShare
0
A partir de incorporações
0
Número de incorporações
7
Ações
Compartilhamentos
0
Downloads
268
Comentários
2
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

ODI Tutorial - Desenvolvendo Procedures

  1. 1. March 3 2012ODITutorialUso da ferramenta Oracle Data Integrator (ODI) paraa construção de processos ETL (Extract, Transformand Load). Nesta série de tutoriais, utilizaremos o ODI Desenvolvimentopara integrar dados de diferentes origens (bancos dedados diferentes e arquivos texto) para uma base de de Proceduresdestino Oracle.
  2. 2. Desenvolvimento de ProceduresDepois de configurar a Topologia para o nosso projeto, começaremos agora adesenvolver as integrações e o primeiro passo nessa jornada é montar o ambiente deorigem, as tabelas, as visões, as procedures, enfim todos os objetos necessários paracriar a origem dos dados.Neste post vou disponibilizar a maneira clássica da criação do ambiente e tambémpropor a utilização do módulo Designer do ODI contruíndo Procedures para exercer amesma função.Mas sempre lembrando que devemos utilizar os objetos de Procedure com muitacautela, pois as procedures permitem a execução de ações bem complexas, incluindocomandos SQL. Além disso, elas permitem a utilização das conexões source e target eainda suportam biding, isto significa que é possível mover dados de um lado para ooutro usando apenas as procedures.Os desenvolvedores que se sentem à vontade com código SQL ficam sériamentetentados a escrever código para fazer transformações e movimentação de dados aoinvés de desenvolver interfaces.Existem alguns problemas quanto à isso:  Procedures contém código manual que precisa sofrer manutenção.  Procedures não mantém referências com os outros artefatos ODI como datastores, modelos, etc, fazendo com que a manutenção seja muito mais complexa comparado às interfaces.  Procedures nunca devem ser utilizadas para mover ou transformar dados, essas operações devem ser feitas utilizando as interfaces.Outra importante informação que devemos ter quando iniciamos um projeto dedesenvolvimento é a organização. Organize o seu projeto no inicio da construção, poisserá muito mais fácil realizar o desenvolvimento e manutenção posterior.O gerenciamento e a organização são pontos críticos quando estamos falando deintegração de dados, o ODI oferece muitas ferramentas que ajudam a organizar odesenvolvimento e o ciclo de vida do projeto, tais como: perfis de segurança, pastas,marcadores, versionamento, importação e exportação, impressão de documentação,etc.Utilize todas as ferramentas disponíveis para gerenciar o seu projeto. Defina aorganização do projeto, a padronização de nomes e tudo o que pode evitar o caosdepois que o projeto tiver iniciado. Em outros posts iremos detalhar cada uma dessasferramentas e features e lembre-se sempre ORGANIZE O SEU PROJETO NO INÍCIO.Neste post iremos explorar conforme mencionado o objeto Procedure, tambémpodemos encontrar na literatura e na versão em português do ODI a nomenclaturaProcedimento.
  3. 3. Procedure ou Procedimento como o nome indica, são objetos em que são escritosqualquer tipo de procedimento “extra” que se faça necessário no processo de ETL.Podemos criar procedimentos que contenham vários tipos de códigos, de diferentestecnologias suportadas pelo ODI, como por exemplo, escrever um procedimento emPL/SQL, em Java, em Jython, etc.Modelagem do SistemaAntes de planejar a criação das PROCEDURES devemos planejar a criação do nossobanco de dados, lembrando que devemos sempre ORGANIZAR O PROJETO NO INÍCIO,para o nosso estudo contruiremos um SISTEMA DE CONTROLE DE VENDAS.O modelo proposto representa uma estrutura básica de vendas de mercadorias, aestrutura de tabelas representa um modelo clássico de Data Warehouse na origem,neste modelo teremos as tabelas CLIENTES, PRODUTOS, GRUPO ITEM, ITENS DEESTOQUE, TIPO DE CLIENTES, VENDEDORES E FATURAMENTO. No destino estaremostrabalhando com o conceito de Data Mart criando uma estrutura de cubos e dimensõespara capturar as informações de faturamento para gerenciamento e análise deperformance de vendas, neste modelo teremos as tabelas de Dimensão paraCLIENTES, PRODUTOS, TEMPO (MESES, ANOS, SEMANAS e ETC.), VENDEDORES e atabela FATO onde serão registrados os KPI’s e/ou indicadores para montagem dasanálises.
  4. 4. Criando as tabelas – Modelo ClássicoModelo Data Warehouse ( User/Schema – DW.ORIGEM )-- Tabela TIPO_CLIENTE CREATE TABLE "DW_ORIGEM"."TIPO_CLIENTE" ( "CD_TIPO_CLIENTE" NUMBER(*,0) NOT NULL ENABLE, "DS_TIPO_CLIENTE" VARCHAR2(30), PRIMARY KEY ("CD_TIPO_CLIENTE") ENABLE ) ;-- Tabela CLIENTE CREATE TABLE "DW_ORIGEM"."CLIENTE" ( "CD_CLIENTE" NUMBER(*,0) NOT NULL ENABLE, "NM_CLIENTE" CHAR(30), "CD_TIPO_CLIENTE" NUMBER(*,0), PRIMARY KEY ("CD_CLIENTE") ENABLE, FOREIGN KEY ("CD_TIPO_CLIENTE") REFERENCES "DW_ORIGEM"."TIPO_CLIENTE"("CD_TIPO_CLIENTE") ON DELETE SET NULL ENABLE );-- Tabela VENDEDOR CREATE TABLE "DW_ORIGEM"."VENDEDOR" ( "CD_VENDEDOR" NUMBER(*,0) NOT NULL ENABLE, "NM_VENDEDOR" CHAR(30), "PERC_COM" NUMBER(5,2), PRIMARY KEY ("CD_VENDEDOR") ENABLE ) ;-- Tabela FATURAMENTO CREATE TABLE "DW_ORIGEM"."FATURAMENTO" ( "NUM_NF" NUMBER(*,0) NOT NULL ENABLE, "CD_VENDEDOR" NUMBER(*,0) NOT NULL ENABLE, "CD_CLIENTE" NUMBER(*,0) NOT NULL ENABLE, "DT_VENDA" DATE NOT NULL ENABLE, "TOT_NF" NUMBER(9,2), "LOCAL_VENDA" VARCHAR2(30), PRIMARY KEY ("NUM_NF") ENABLE, FOREIGN KEY ("CD_CLIENTE") REFERENCES "DW_ORIGEM"."CLIENTE"("CD_CLIENTE") ENABLE, FOREIGN KEY ("CD_VENDEDOR") REFERENCES "DW_ORIGEM"."VENDEDOR"("CD_VENDEDOR") ENABLE ) ;
  5. 5. -- Tabela GRUPO_ITEM CREATE TABLE "DW_ORIGEM"."GRUPO_ITEM" ( "CD_GRUPO_ITEM" NUMBER(*,0) NOT NULL ENABLE, "NM_GRUPO_ITEM" CHAR(30), PRIMARY KEY ("CD_GRUPO_ITEM") ENABLE ) ;-- Tabela ITEM_ESTOQUE CREATE TABLE "DW_ORIGEM"."ITEM_ESTOQUE" ( "CD_GRUPO_ITEM" NUMBER(*,0) NOT NULL ENABLE, "CD_ITEM" NUMBER(*,0) NOT NULL ENABLE, "NM_ITEM" VARCHAR2(40) NOT NULL, "UNIDADE" VARCHAR2(5), "PRECO" NUMBER(9,2), "QTE_ESTOQUE" NUMBER(*,0), PRIMARY KEY ("CD_GRUPO_ITEM", "CD_ITEM") ENABLE, FOREIGN KEY ("CD_GRUPO_ITEM") REFERENCES"DW_ORIGEM"."GRUPO_ITEM" ("CD_GRUPO_ITEM") ENABLE ) ;-- Tabela ITEM_NF CREATE TABLE "DW_ORIGEM"."ITEM_NF" ( "NUM_NF" NUMBER(*,0) NOT NULL ENABLE, "CD_GRUPO_ITEM" NUMBER(*,0) NOT NULL ENABLE, "CD_ITEM" NUMBER(*,0) NOT NULL ENABLE, "QTE_VENDA" NUMBER(*,0), "VLR_UNITARIO" NUMBER(9,2), PRIMARY KEY ("NUM_NF", "CD_GRUPO_ITEM", "CD_ITEM") ENABLE, FOREIGN KEY ("CD_GRUPO_ITEM", "CD_ITEM") REFERENCES"DW_ORIGEM"."ITEM_ESTOQUE" ("CD_GRUPO_ITEM", "CD_ITEM") ENABLE ) ;
  6. 6. Modelo Data Mart ( User/Schema – DW.DESTINO )-- Tabela DIM_CLIENTE CREATE TABLE "DW_DESTINO"."DIM_CLIENTE" ( "CD_CLIENTE" NUMBER(*,0), "NM_CLIENTE" VARCHAR2(30), "CD_TIPO_CLIENTE" NUMBER(*,0), "DS_TIPO_CLIENTE" VARCHAR2(30), "ID_CLIENTE" NUMBER(*,0) NOT NULL ENABLE, CONSTRAINT "DIM_CLIENTE_PK" PRIMARY KEY ("ID_CLIENTE") ENABLE ) ;-- Tabela DIM_PRODUTOCREATE TABLE "DW_DESTINO"."DIM_PRODUTO" ( "ID_PRODUTO" NUMBER(*,0) NOT NULL ENABLE, "CD_ITEM" NUMBER(*,0), "CD_GRUPO_ITEM" NUMBER(*,0), "UNIDADE" VARCHAR2(5), "NM_ITEM" VARCHAR2(40), "NM_GRUPO_ITEM" VARCHAR2(30), CONSTRAINT "DIM_PRODUTO_PK" PRIMARY KEY ("ID_PRODUTO") ENABLE ) ;-- Tabela DIM_TEMPO CREATE TABLE "DW_DESTINO"."DIM_TEMPO" ( "ID_TEMPO" NUMBER NOT NULL ENABLE, "DATA_DIA" DATE, "DIA" NUMBER, "DIA_SEMANA" VARCHAR2(50), "MES" NUMBER, "MES_ANO" VARCHAR2(50), "ANO" NUMBER, "TURNO" VARCHAR2(50), CONSTRAINT "DIM_TEMPO_PK" PRIMARY KEY ("ID_TEMPO") ENABLE ) ;-- Tabela DIM_VENDEDOR CREATE TABLE "DW_DESTINO"."DIM_VENDEDOR" ( "ID_VENDEDOR" NUMBER NOT NULL ENABLE, "CD_VENDEDOR" NUMBER, "NM_VENDEDOR" VARCHAR2(30), "PERC_COM" NUMBER(5,2), CONSTRAINT "DIM_VENDEDOR_PK" PRIMARY KEY ("ID_VENDEDOR") ENABLE ) ;
  7. 7. -- Tabela FATO_VENDAS CREATE TABLE "DW_DESTINO"."FATO_VENDAS" ( "ID_PRODUTO" NUMBER NOT NULL ENABLE, "ID_CLIENTE" NUMBER NOT NULL ENABLE, "ID_VENDEDOR" NUMBER NOT NULL ENABLE, "ID_TEMPO" NUMBER NOT NULL ENABLE, "QTE_VENDA" NUMBER, "PRC_VENDA" NUMBER(9,2), FOREIGN KEY ("ID_PRODUTO") REFERENCES "DW_DESTINO"."DIM_PRODUTO"("ID_PRODUTO") ENABLE, FOREIGN KEY ("ID_CLIENTE") REFERENCES "DW_DESTINO"."DIM_CLIENTE"("ID_CLIENTE") ENABLE, FOREIGN KEY ("ID_VENDEDOR") REFERENCES "DW_DESTINO"."DIM_VENDEDOR"("ID_VENDEDOR") ENABLE, FOREIGN KEY ("ID_TEMPO") REFERENCES "DW_DESTINO"."DIM_TEMPO"("ID_TEMPO") ENABLE ) ;
  8. 8. Inserindo Dados – Modelo ClássicoModelo Data Warehouse ( User/Schema – DW.ORIGEM )-- DADOS PARA TABELA TIPO_CLIENTEInsert into TIPO_CLIENTE (CD_TIPO_CLIENTE,DS_TIPO_CLIENTE) values(5,COMERCIO);Insert into TIPO_CLIENTE (CD_TIPO_CLIENTE,DS_TIPO_CLIENTE) values(6,ARQUITETURA);Insert into TIPO_CLIENTE (CD_TIPO_CLIENTE,DS_TIPO_CLIENTE) values(7,INFORMATICA);Insert into TIPO_CLIENTE (CD_TIPO_CLIENTE,DS_TIPO_CLIENTE) values(8,INDUSTRIA);Insert into TIPO_CLIENTE (CD_TIPO_CLIENTE,DS_TIPO_CLIENTE) values(10,BANCO);-- DADOS PARA TABELA CLIENTEInsert into CLIENTE (CD_CLIENTE,NM_CLIENTE,CD_TIPO_CLIENTE) values(1,Sanders Roch,7);Insert into CLIENTE (CD_CLIENTE,NM_CLIENTE,CD_TIPO_CLIENTE) values (2,PernalLivi,8);Insert into CLIENTE (CD_CLIENTE,NM_CLIENTE,CD_TIPO_CLIENTE) values(3,Marenghi Nor,5);Insert into CLIENTE (CD_CLIENTE,NM_CLIENTE,CD_TIPO_CLIENTE) values (4,OBrienVan DerHor,6);Insert into CLIENTE (CD_CLIENTE,NM_CLIENTE,CD_TIPO_CLIENTE) values (5,HanesAlvis,10);Insert into CLIENTE (CD_CLIENTE,NM_CLIENTE,CD_TIPO_CLIENTE) values(7,Rothman Chit,7);Insert into CLIENTE (CD_CLIENTE,NM_CLIENTE,CD_TIPO_CLIENTE) values(9,Koonitz Scprect Tu,6);-- DADOS PARA TABELA VENDEDORInsert into VENDEDOR (CD_VENDEDOR,NM_VENDEDOR,PERC_COM) values (1,MariaELISA ANGE,9);Insert into VENDEDOR (CD_VENDEDOR,NM_VENDEDOR,PERC_COM) values (4,LUCasZardo dos reis,10);Insert into VENDEDOR (CD_VENDEDOR,NM_VENDEDOR,PERC_COM) values(5,CLAUDIOMIRO A NUNES,8);Insert into VENDEDOR (CD_VENDEDOR,NM_VENDEDOR,PERC_COM) values (15,SILVIAMaria,6);
  9. 9. Insert into VENDEDOR (CD_VENDEDOR,NM_VENDEDOR,PERC_COM) values (10,Mirna SRIAT,6);Insert into VENDEDOR (CD_VENDEDOR,NM_VENDEDOR,PERC_COM) values (11,MarA LBatista,4);-- DADOS PARA TABELA FATURAMENTOInsert into FATURAMENTO(NUM_NF,CD_VENDEDOR,CD_CLIENTE,DT_VENDA,TOT_NF,LOCAL_VENDA) values(441,1,5,to_date(29/12/04,DD/MM/RR),123.44,Ijuí);Insert into FATURAMENTO(NUM_NF,CD_VENDEDOR,CD_CLIENTE,DT_VENDA,TOT_NF,LOCAL_VENDA) values(442,4,2,to_date(30/12/04,DD/MM/RR),58.14,Santa Rosa);Insert into FATURAMENTO(NUM_NF,CD_VENDEDOR,CD_CLIENTE,DT_VENDA,TOT_NF,LOCAL_VENDA) values(12941,5,3,to_date(31/12/04,DD/MM/RR),28.49,Panambi);Insert into FATURAMENTO(NUM_NF,CD_VENDEDOR,CD_CLIENTE,DT_VENDA,TOT_NF,LOCAL_VENDA) values(12942,5,3,to_date(01/01/05,DD/MM/RR),1921.72,Santa Rosa);Insert into FATURAMENTO(NUM_NF,CD_VENDEDOR,CD_CLIENTE,DT_VENDA,TOT_NF,LOCAL_VENDA) values(541,1,4,to_date(02/01/05,DD/MM/RR),51.44,Ijuí);Insert into FATURAMENTO(NUM_NF,CD_VENDEDOR,CD_CLIENTE,DT_VENDA,TOT_NF,LOCAL_VENDA) values(642,11,5,to_date(03/01/05,DD/MM/RR),23.14,Panambi);Insert into FATURAMENTO(NUM_NF,CD_VENDEDOR,CD_CLIENTE,DT_VENDA,TOT_NF,LOCAL_VENDA) values(2941,10,7,to_date(04/01/05,DD/MM/RR),12.66,Ijuí);Insert into FATURAMENTO(NUM_NF,CD_VENDEDOR,CD_CLIENTE,DT_VENDA,TOT_NF,LOCAL_VENDA) values(1292,5,9,to_date(05/01/05,DD/MM/RR),321.01,Panambi);Insert into FATURAMENTO(NUM_NF,CD_VENDEDOR,CD_CLIENTE,DT_VENDA,TOT_NF,LOCAL_VENDA) values(361,4,1,to_date(06/01/05,DD/MM/RR),73.44,Santa Rosa);Insert into FATURAMENTO(NUM_NF,CD_VENDEDOR,CD_CLIENTE,DT_VENDA,TOT_NF,LOCAL_VENDA) values(2,11,4,to_date(07/01/05,DD/MM/RR),3.14,Ijuí);Insert into FATURAMENTO(NUM_NF,CD_VENDEDOR,CD_CLIENTE,DT_VENDA,TOT_NF,LOCAL_VENDA) values(191,15,1,to_date(08/01/05,DD/MM/RR),62.66,Santa Rosa);Insert into FATURAMENTO(NUM_NF,CD_VENDEDOR,CD_CLIENTE,DT_VENDA,TOT_NF,LOCAL_VENDA) values(122,5,2,to_date(09/01/05,DD/MM/RR),31.64,Ijuí);
  10. 10. Insert into FATURAMENTO(NUM_NF,CD_VENDEDOR,CD_CLIENTE,DT_VENDA,TOT_NF,LOCAL_VENDA) values(51,5,5,to_date(11/01/05,DD/MM/RR),183.99,Panambi);Insert into FATURAMENTO(NUM_NF,CD_VENDEDOR,CD_CLIENTE,DT_VENDA,TOT_NF,LOCAL_VENDA) values(62,4,4,to_date(05/01/05,DD/MM/RR),29.44,Santa Rosa);Insert into FATURAMENTO(NUM_NF,CD_VENDEDOR,CD_CLIENTE,DT_VENDA,TOT_NF,LOCAL_VENDA) values(371,11,4,to_date(10/01/05,DD/MM/RR),82.66,Santa Rosa);Insert into FATURAMENTO(NUM_NF,CD_VENDEDOR,CD_CLIENTE,DT_VENDA,TOT_NF,LOCAL_VENDA) values(1092,10,5,to_date(09/01/05,DD/MM/RR),221.93,Ijuí);-- DADOS PARA TABELA GRUPO_ITEMInsert into GRUPO_ITEM (CD_GRUPO_ITEM, NM_GRUPO_ITEM) values (7,Eletronicos);Insert into GRUPO_ITEM (CD_GRUPO_ITEM, NM_GRUPO_ITEM) values (4, Livraria);Insert into GRUPO_ITEM (CD_GRUPO_ITEM, NM_GRUPO_ITEM) values (5,Informatica);Insert into GRUPO_ITEM (CD_GRUPO_ITEM, NM_GRUPO_ITEM) values (1, ArtigosEsportivos);-- DADOS PARA TABELA ITEM_ESTOQUEInsert into ITEM_ESTOQUE (CD_GRUPO_ITEM, CD_ITEM, NM_ITEM, UNIDADE, PRECO,QTE_ESTOQUE) values (5, 1, Cartucho CANON BC-02, UND, 72.5, 20);Insert into ITEM_ESTOQUE (CD_GRUPO_ITEM, CD_ITEM, NM_ITEM, UNIDADE, PRECO,QTE_ESTOQUE) values (5, 2, Cartucho EPSON 20093, UND, 65.1, 10);Insert into ITEM_ESTOQUE (CD_GRUPO_ITEM, CD_ITEM, NM_ITEM, UNIDADE, PRECO,QTE_ESTOQUE) values (5, 3, Cartucho HP 51629A, UND, 45.28, 17);Insert into ITEM_ESTOQUE (CD_GRUPO_ITEM, CD_ITEM, NM_ITEM, UNIDADE, PRECO,QTE_ESTOQUE) values (5, 36, Papel form. 80 1V br.c/3000 SP, CXA, 55.79,6);Insert into ITEM_ESTOQUE (CD_GRUPO_ITEM, CD_ITEM, NM_ITEM, UNIDADE, PRECO,QTE_ESTOQUE) values (5, 31, Refil impr.EXTR.8508 51649A c1, CJT, 19.39,7);Insert into ITEM_ESTOQUE (CD_GRUPO_ITEM, CD_ITEM, NM_ITEM, UNIDADE, PRECO,QTE_ESTOQUE) values (5, 47, Toner HP C 7115A p/laser 1200, UND, 245.61,3);Insert into ITEM_ESTOQUE (CD_GRUPO_ITEM, CD_ITEM, NM_ITEM, UNIDADE, PRECO,QTE_ESTOQUE) values (5, 50, Mouse CLONE c/saida serial, UND, 5.33, 3);Insert into ITEM_ESTOQUE (CD_GRUPO_ITEM, CD_ITEM, NM_ITEM, UNIDADE, PRECO,QTE_ESTOQUE) values (4, 1, Cola TENAZ 500grs, TBO, 2.5, 20);
  11. 11. Insert into ITEM_ESTOQUE (CD_GRUPO_ITEM, CD_ITEM, NM_ITEM, UNIDADE, PRECO,QTE_ESTOQUE) values (4, 31, Caneta esfer.PARKER, PC, 5.8, 3);Insert into ITEM_ESTOQUE (CD_GRUPO_ITEM, CD_ITEM, NM_ITEM, UNIDADE, PRECO,QTE_ESTOQUE) values (4, 33, Agenda, PC, 6.54, 8);Insert into ITEM_ESTOQUE (CD_GRUPO_ITEM, CD_ITEM, NM_ITEM, UNIDADE, PRECO,QTE_ESTOQUE) values (4, 4, Album, PC, 12.78, 12);Insert into ITEM_ESTOQUE (CD_GRUPO_ITEM, CD_ITEM, NM_ITEM, UNIDADE, PRECO,QTE_ESTOQUE) values (4, 41, Regua Metal, UND, 1.78, 81);Insert into ITEM_ESTOQUE (CD_GRUPO_ITEM, CD_ITEM, NM_ITEM, UNIDADE, PRECO,QTE_ESTOQUE) values (7, 2, DVD, UND, 1222.5, 2);Insert into ITEM_ESTOQUE (CD_GRUPO_ITEM, CD_ITEM, NM_ITEM, UNIDADE, PRECO,QTE_ESTOQUE) values (7, 4, Televisao 14 Pol., PC, 445.8, 3);Insert into ITEM_ESTOQUE (CD_GRUPO_ITEM, CD_ITEM, NM_ITEM, UNIDADE, PRECO,QTE_ESTOQUE) values (7, 8, PlayStation, PC, 512.78, 8);-- DADOS PARA TABELA ITEM_NFInsert into ITEM_NF (NUM_NF, CD_GRUPO_ITEM, CD_ITEM, QTE_VENDA, VLR_UNITARIO)values (2, 4, 1, 1, 3.14);Insert into ITEM_NF (NUM_NF, CD_GRUPO_ITEM, CD_ITEM, QTE_VENDA, VLR_UNITARIO)values (51, 5, 2, 1, 65.1);Insert into ITEM_NF (NUM_NF, CD_GRUPO_ITEM, CD_ITEM, QTE_VENDA, VLR_UNITARIO)values (51, 5, 3, 1, 48.28);Insert into ITEM_NF (NUM_NF, CD_GRUPO_ITEM, CD_ITEM, QTE_VENDA, VLR_UNITARIO)values (51, 5, 1, 1, 70.61);Insert into ITEM_NF (NUM_NF, CD_GRUPO_ITEM, CD_ITEM, QTE_VENDA, VLR_UNITARIO)values (12941, 5, 31, 1, 28.49);Insert into ITEM_NF (NUM_NF, CD_GRUPO_ITEM, CD_ITEM, QTE_VENDA, VLR_UNITARIO)values (12942, 7, 2, 1, 1921.72);Insert into ITEM_NF (NUM_NF, CD_GRUPO_ITEM, CD_ITEM, QTE_VENDA, VLR_UNITARIO)values (2941, 4, 33, 1, 12.66);Insert into ITEM_NF (NUM_NF, CD_GRUPO_ITEM, CD_ITEM, QTE_VENDA, VLR_UNITARIO)values (1292, 5, 47, 1, 245.61);Insert into ITEM_NF (NUM_NF, CD_GRUPO_ITEM, CD_ITEM, QTE_VENDA, VLR_UNITARIO)values (1292, 5, 2, 1, 75.4);Insert into ITEM_NF (NUM_NF, CD_GRUPO_ITEM, CD_ITEM, QTE_VENDA, VLR_UNITARIO)values (1092, 5, 47, 1, 221.93);Insert into ITEM_NF (NUM_NF, CD_GRUPO_ITEM, CD_ITEM, QTE_VENDA, VLR_UNITARIO)values (642, 4, 1, 8, 2.5);Insert into ITEM_NF (NUM_NF, CD_GRUPO_ITEM, CD_ITEM, QTE_VENDA, VLR_UNITARIO)values (642, 5, 50, 1, 3.14);Insert into ITEM_NF (NUM_NF, CD_GRUPO_ITEM, CD_ITEM, QTE_VENDA, VLR_UNITARIO)values (541, 5, 36, 1, 51.44);
  12. 12. Insert into ITEM_NF (NUM_NF, CD_GRUPO_ITEM, CD_ITEM, QTE_VENDA, VLR_UNITARIO)values (442, 5, 31, 2, 19.39);Insert into ITEM_NF (NUM_NF, CD_GRUPO_ITEM, CD_ITEM, QTE_VENDA, VLR_UNITARIO)values (442, 4, 4, 1, 19.36);Insert into ITEM_NF (NUM_NF, CD_GRUPO_ITEM, CD_ITEM, QTE_VENDA, VLR_UNITARIO)values (441, 5, 1, 1, 123.44);Insert into ITEM_NF (NUM_NF, CD_GRUPO_ITEM, CD_ITEM, QTE_VENDA, VLR_UNITARIO)values (371, 5, 36, 1, 82.66);Insert into ITEM_NF (NUM_NF, CD_GRUPO_ITEM, CD_ITEM, QTE_VENDA, VLR_UNITARIO)values (361, 4, 31, 10, 5.8);Insert into ITEM_NF (NUM_NF, CD_GRUPO_ITEM, CD_ITEM, QTE_VENDA, VLR_UNITARIO)values (361, 4, 41, 1, 15.44);Insert into ITEM_NF (NUM_NF, CD_GRUPO_ITEM, CD_ITEM, QTE_VENDA, VLR_UNITARIO)values (191, 5, 36, 1, 62.66);Insert into ITEM_NF (NUM_NF, CD_GRUPO_ITEM, CD_ITEM, QTE_VENDA, VLR_UNITARIO)values (122, 4, 1, 10, 2.5);Insert into ITEM_NF (NUM_NF, CD_GRUPO_ITEM, CD_ITEM, QTE_VENDA, VLR_UNITARIO)values (122, 5, 50, 1, 6.64);Insert into ITEM_NF (NUM_NF, CD_GRUPO_ITEM, CD_ITEM, QTE_VENDA, VLR_UNITARIO)values (62, 4, 1, 1, 2.5);Insert into ITEM_NF (NUM_NF, CD_GRUPO_ITEM, CD_ITEM, QTE_VENDA, VLR_UNITARIO)values (62, 4, 31, 1, 5.8);Insert into ITEM_NF (NUM_NF, CD_GRUPO_ITEM, CD_ITEM, QTE_VENDA, VLR_UNITARIO)values (62, 4, 41, 1, 1.78);Insert into ITEM_NF (NUM_NF, CD_GRUPO_ITEM, CD_ITEM, QTE_VENDA, VLR_UNITARIO)values (62, 5, 50, 1, 5.33);Insert into ITEM_NF (NUM_NF, CD_GRUPO_ITEM, CD_ITEM, QTE_VENDA, VLR_UNITARIO)values (62, 4, 33, 1, 14.03);Depois de demonstrar como criaras tabelas e popular com dados utilizando SQL puro,é chegada a hora de fazer exatamente a mesma coisa só que através do Oracle DataIntegrator.
  13. 13. Criando um novo ProjetoA partir desse momento vamos ingressar no Oracle Data Integrator e criar osprocedimentos (Procedures) para a montagem do nosso ambiente de trabalho,lembrando que devemos criar as tabelas dos ambientes de origem e destino, depoisdessa tarefa devemos criar outros procedimentos para popular essas tabelas.Entre no ODI Designer : Start > Programs > Oracle > Oracle Data Integrator> Designer, selecione OracleDI Tutorial Series Work Repository no Login Namee em seguida entre com o usuário e senha, no post anterior criamos o usuárioDW_DBA, a senha é DW_DBA.Após entrar no módulo Designer, clique no botão Insert Project . Neste ponto iráser mostrada a figura abaixo, preencha as informações conforme descrito.OracleDI_Tutorial_Series no campo Name, veja que o campo Code foi preenchidoautomaticamente.Ao terminar o preenchimento do nome do projeto clique no botão OK.
  14. 14. Após a criação do projeto, devemos ter essa visão, o próximo passo é renomear apasta chamada First Folder, nesta pasta se encontram todos os principais objetos emum projeto de ETL, tais como Package (Pacotes), Interfaces (Interfaces de integração)e Procedures (Procedimento). Vamos renomear esse diretório para DatabaseCreation e teremos essa visão.Perceba, que para alterar o nome da pasta, deve-se clicar na pasta com o botão direitodo mouse e selecionar a opção editar, neste instante a janela ao lado será mostrada,altere o valor do campo disponível para o conteúdo solicitado e clique em OK.
  15. 15. Após essas primeiras configurações teremos esse resultado.
  16. 16. Procedure ODI – Criar TabelasVamos agora criar as Procedures no ODI para montagem das nossas estruturas detabelas e para preencher as tabelas originais. 1. Expanda a pasta Database Creation, e clique com o botão direito sobre Procedures e selecione Insert Procedure. 2. Nomeie a Procedure como Create-Source-Tables. No parâmetro Target Technology defina como Oracle, deixe o parâmetro Source Technology como <Undefined>. Clique na pasta Details em seguida clique no ícone para adicionar os passos na construção da Procedure.
  17. 17. 3. Vamos utilizar o campo Command pra montar o código a ser executado. No nosso projeto iremos utilizar comandos SQL. Entre os parâmetros de acordo com a tabela abaixo: Parâmetro Valor Name CR-TBL-TIPOCLIENTE Technology Oracle Context <Execution Context> Schema LOGICAL_DW_ORIGEM Command -- Tabela TIPO_CLIENTE CREATE TABLE "TIPO_CLIENTE" ( "CD_TIPO_CLIENTE" NUMBER(*,0) NOT NULL ENABLE, "DS_TIPO_CLIENTE" VARCHAR2(30), PRIMARY KEY ("CD_TIPO_CLIENTE") ENABLE ) É muito importante ressaltar que devemos trabalhar na pasta Command on Target, pois estamos gerando códigos diretamente no local onde iremos criar as tabelas, e não estamos tratando código fonte, mas é possível, criar procedures através de arquivos texto utilizando os recursos do Command on Source. Os requisitos são os mesmos as parametrizações também. Por este motivo também selecionamos tecnologia apenas para o Target Tecnology. Nota 1: como boas práticas recomendo deixar o parâmetro Context sempre como <Execution Context> pois a Procedure pode ser facilmente utilizada em qualquer um dos ambientes parametrizados para o projeto, seja Desenvolvimento, Teste, Homologação e/ou Produção. Nota 2: quando executamos um comando SQL no ODI, devemos tirar o comando “;” para terminação de sentença e não há necessidade de identificar o OWNER da tabela, no nosso casso “DW_ORIGEM” ou “LOGICAL_DW_ORIGEM”. Na figura abaixo podemos ver como ficou o resultado final:
  18. 18. 4. Expanda a pasta das Procedures e clique com o botão direito sob a Procedure Create-Source-Table em seguida clique em Execute.
  19. 19. 5. Agora abra o ODI Operator. No ODI Operator, click em All Executions, clique em Refresh e procure a sua sessão, e verifique se a sua procedure foi executada com sucesso.6. Agora abra o Oracle SQL Developer e expanda a conexão DW_ORIGEM. Selecione a pasta Tables e verifique se a sua tabela foi criada.
  20. 20. 7. Depois de validar a criação da Tabela TIPO_CLIENTE, repita os procedimentos até criar todas as tabelas no ambiente. Nota 3: ao executar o processo de criação pela primeira vez e a tabela é criada, sempre que executar esse processo posteriormente irá ocorrer erro, conforme mostrado na figura abaixo, pois a tabela já existe. Para tanto, sempre que for recriar as tabelas as mesmas devem primeiro ser deletadas.
  21. 21. Procedure ODI – Carregar TabelasAgora vamos criar as Procedures para carregar os dados nas tabelas, preencha osparâmetros de acordo com a tabela abaixo:Nota 4: Crie uma nova procedure somente para carregar os dados das tabelas. Parâmetro ValorName CR-DATA-TIPOCLIENTETechnology OracleContext <Execution Context>Schema LOGICAL_DW_ORIGEMCommand-- DADOS PARA TABELA TIPO_CLIENTEbeginInsert into <%=odiRef.getSchemaName("D")%>."TIPO_CLIENTE"(CD_TIPO_CLIENTE,DS_TIPO_CLIENTE) values (5,COMERCIO);Insert into <%=odiRef.getSchemaName("D")%>."TIPO_CLIENTE"(CD_TIPO_CLIENTE,DS_TIPO_CLIENTE) values (6,ARQUITETURA);Insert into <%=odiRef.getSchemaName("D")%>."TIPO_CLIENTE"(CD_TIPO_CLIENTE,DS_TIPO_CLIENTE) values (7,INFORMATICA);Insert into <%=odiRef.getSchemaName("D")%>."TIPO_CLIENTE"(CD_TIPO_CLIENTE,DS_TIPO_CLIENTE) values (8,INDUSTRIA);Insert into <%=odiRef.getSchemaName("D")%>."TIPO_CLIENTE"(CD_TIPO_CLIENTE,DS_TIPO_CLIENTE) values (10,BANCO);end;Nota 5: Perceba que para o commando utilizado no ODI colocamos duas instruçõesPL/SQL begin e end e também estou utilizando uma função de substituição paramontar o owner da tabela odiRef.getSchemaName("D")%>.
  22. 22. Depois de montar a Procedure, execute e valide as informações através do ODIOperator e Oracle SQL Developer.Nota 6: repita o procedimento até carregar os dados de todas as tabelas. Lembre-seque você poderá criar várias Procedures ou apenas uma com vários processos dentrodelas.

×