Página 1 de 1

ETL - Help

Enviado: Ter, 15 Abr 2008 11:10 am
por mariogus
Pessoal,preciso de um help para incluir alguns atributos nas procedures de atualização do ETL. São eles - dt_desativação e cd_grupo_ar.

Script:

Selecionar tudo

CREATE OR REPLACE PROCEDURE sp_f_ar AS
/*************************************************************
Funcao     : ETL AR
Criado	em : 19/08/2007
Responsavel: Célio Nunes
Notas      :

**************************************************************/
--variaveis
vDT_INICIO            VARCHAR2(50)  := TO_CHAR(SYSDATE,'DD/MM/YYYY HH24:MI:SS');
vLINHAS		            NUMERIC(10,0)	:= 0;

--------------------------------------------------------------------------------
BEGIN

--Execute immediate 'truncate table F_AR';
delete from F_AR;
commit work;

INSERT INTO F_AR(cd_estabelecimento,hist_status, hist_dt_ultimo_contato, hist_dt_proximo_contato,
hist_observacao, ds_usuario_ar, sk_tempo, hist_fl_antecipacao)
(SELECT  ar.CD_ESTABELECIMENTO,
        CASE
	        WHEN IND_STATUS='NA' then 'NÃO ANTECIPA'
	        WHEN IND_STATUS='NP' then 'NÃO PRECISA'
	        WHEN IND_STATUS='AC' then 'ANTECIPA (OUTROS CARTOES)'
	        WHEN IND_STATUS='TA' then 'TAXA ALTA'
	        WHEN IND_STATUS='AG' then 'AGENDADO'
	        WHEN IND_STATUS='AT' then 'ANTECIPADO'
	        WHEN IND_STATUS='NE' then 'NÃO ESTAVA'
	        WHEN IND_STATUS='AL' then 'ACUMULAR LOTES'
	        WHEN IND_STATUS='OC' then 'OCUPADO'
	        WHEN IND_STATUS='RE' then 'RESPONSAVEL DECISOR não ESTAVA'
	        WHEN IND_STATUS='NL' then 'NÃO LIGAR'
	        WHEN IND_STATUS='NT' then 'NÃO ATENDE'
	        WHEN IND_STATUS='TE' then 'TELEFONE ERRADO'
	        WHEN IND_STATUS='EM' then 'EMPRÉSTIMO GIRO FÁCIL'
	        WHEN IND_STATUS='AA' then 'ANTECIPAÇÃO AUTOMATICA AAR'
	        WHEN IND_STATUS='SL' then 'SEM LOTES'
	        WHEN IND_STATUS='PG' then 'PROBLEMAS COM A GOODCARD'
	        WHEN IND_STATUS='JC' then 'JÁ CONTATADO NOS ÚLTIMOS TRES DIAS'
	        WHEN IND_STATUS='RA' then 'REDE - ANTECIPA'
	        WHEN IND_STATUS='RN' then 'REDE - NÃO ANTECIPA'
	        ELSE IND_STATUS
      END AS HIST_STATUS,
      trunc(ar.DT_ULTIMO_CONTATO) AS DT_ULTIMO_CONTATO,
      trunc(ar.DT_PROXIMO_CONTATO) AS DT_PROXIMO_CONTATO,
      Upper(ar.OBSERVACAO) AS OBSERVACAO,
      Upper(u.DS_NOME_COMPLETO) as DS_USUARIO_AR,
      -1 AS sk_tempo,
      'P' AS HIST_FL_ANTECIPACAO
FROM  HISTORICO_AR@DB_ORADB01 ar, USUARIO@DB_ORADB01 u
WHERE ar.cd_usuario_ar = U.cd_usuario
AND   cd_historico_ar IN(
                      SELECT Max(cd_historico_ar)
                      FROM  HISTORICO_AR@DB_ORADB01 ar2  
                      --WHERE cd_Estabelecimento = 78654                        
                      GROUP BY cd_estabelecimento, Trunc(dt_ultimo_contato)
                      )

);
COMMIT;

UPDATE F_AR far
SET   (SK_TEMPO) = (SELECT DT.SK_TEMPO FROM  D_TEMPO DT
                    WHERE  hist_dt_ultimo_contato = dat_data);
COMMIT;

--verifica estabelecimentos antecipados ultimos 60 dias
UPDATE F_AR FAR
SET HIST_FL_ANTECIPACAO = 'M'
WHERE EXISTS(SELECT   1
              FROM    estabelecimento_adiantamento@db_oradb01 EA
              WHERE   EA.cd_estabelecimento = FAR.CD_ESTABELECIMENTO
              AND     dt_reprovacao_adiantamento IS NULL
              AND     dt_liberacao_adiantamento IS NOT null
              AND     dt_liberacao_adiantamento BETWEEN (far.hist_dt_ultimo_contato-60) AND (far.hist_dt_ultimo_contato+1)
             );
COMMIT;

SELECT Count(*)
INTO vLINHAS
FROM F_AR;

GRAVA_LOG('SP_F_AR',vDT_INICIO, vLINHAS);
commit work;

END;

Enviado: Ter, 15 Abr 2008 1:36 pm
por jucruzjc
OI...

Desculpe a ignorância... mas num entendi o que você quis dizer!
:roll:

Poderia explicar novamente?

Enviado: Ter, 15 Abr 2008 2:00 pm
por Trevisolli
Você deseja passar essas duas informações por PARÂMETRO e, fazer com que elas participem do teu INSERT?

Help - ETL

Enviado: Ter, 15 Abr 2008 2:02 pm
por mariogus
Sim...a minha dúvida também consiste se preciso mudar a Fato - F_AR?