Análise de Mídias Sociais
www.coresynesis.com.br A CORE SYNESIS traz para o mercado produtos e serviços integrados de apoio à gestão empresarial. Nossas soluções unem conceitos de gestão, conhecimento de funções empresariais, tecnologias da informação e conhecimento do negócio. Levamos ao mercado o conceito de Process and Performance Management. O suporte tecnológico das soluções da Core Synesis é resultado da aplicação combinada de tecnologias de apoio a gestão, abrangendo BI, BA, BPM e CM.
sexta-feira, 23 de junho de 2017
quarta-feira, 14 de junho de 2017
terça-feira, 6 de junho de 2017
domingo, 28 de maio de 2017
quinta-feira, 25 de maio de 2017
segunda-feira, 18 de julho de 2016
Carga da Dimensão Tempo (Com Feriados Brasil) - PLSQL
/*
Autor: Erick Furst
Empresa: Core Synesis
Data: 20/08/2015
Descrição: Processo para carga da Dimensão Tempo.
--------------------------------------------------
--Carga dimensão Ano (Year dimension load)
declare
Data DATE;
DataIni DATE;
DataFim DATE;
Data_Movel DATE;
BEGIN
DataIni := to_date('2000/01/01','yyyy/mm/dd');
DataFim := to_date('2040/12/31','yyyy/mm/dd');
Data := DataIni;
WHILE Data <= DataFim LOOP
INSERT INTO DIM_ANO ( NUM_ANO, NUM_ANO_ANT )
VALUES ( TO_CHAR(extract(YEAR from Data)), TO_CHAR(extract(YEAR from Data)-1) );
Data := add_months(Data,12);
Data := add_months(Data,1) - extract(DAY from (add_months(Data,1)));
END LOOP;
COMMIT;
END;
-- select * from ano
--------------------------------------------------
--Carga dimensão Semestre (Six month period dimension load)
declare
Data DATE;
DataIni DATE;
DataFim DATE;
Data_Movel DATE;
BEGIN
DataIni := to_date('2000/01/01','yyyy/mm/dd');
DataFim := to_date('2040/12/31','yyyy/mm/dd');
Data := DataIni;
WHILE Data <= DataFim LOOP
INSERT INTO DIM_SEMESTRE(NUM_ANO_SMT, DES_ANO_SMT, NUM_SMT, DES_SMT, NUM_ANO )
VALUES
(
TO_CHAR(extract(YEAR from Data)) || DECODE(TO_NUMBER(TO_CHAR(Data,'Q'))
,1,'01'
,2,'01'
,3,'02'
,4,'02'),
DECODE(TO_NUMBER(TO_CHAR(Data,'Q'))
,1,'1º Semestre de '
,2,'1º Semestre de '
,3,'2º Semestre de '
,4,'2º Semestre de ') || TO_CHAR(extract(YEAR from Data)),
DECODE(TO_NUMBER(TO_CHAR(Data,'Q'))
,1,'01'
,2,'01'
,3,'02'
,4,'02'),
DECODE(TO_NUMBER(TO_CHAR(Data,'Q'))
,1,'1º Semestre'
,2,'1º Semestre'
,3,'2º Semestre'
,4,'2º Semestre'),
TO_CHAR(extract(YEAR from Data))
);
Data := add_months(Data,6);
Data := add_months(Data,1) - extract(DAY from (add_months(Data,1)));
END LOOP;
COMMIT;
END;
-- select * from semestre
--------------------------------------------------
--Carga dimensão trimestre (Quarter dimension load)
declare
Data DATE;
DataIni DATE;
DataFim DATE;
Data_Movel DATE;
BEGIN
DataIni := to_date('2000/01/01','yyyy/mm/dd');
DataFim := to_date('2040/12/31','yyyy/mm/dd');
Data := DataIni;
WHILE Data <= DataFim LOOP
INSERT INTO DIM_TRIMESTRE(NUM_ANO_TRM, DES_ANO_TRM, NUM_TRM, DES_TRM, NUM_ANO_SMT)
VALUES
(
TO_CHAR(extract(YEAR from Data)) || DECODE(TO_NUMBER(TO_CHAR(Data,'Q'))
,1,'01'
,2,'02'
,3,'03'
,4,'04'),
DECODE(TO_NUMBER(TO_CHAR(Data,'Q'))
,1,'1º Trimestre de '
,2,'2º Trimestre de '
,3,'3º Trimestre de '
,4,'4º Trimestre de ') || TO_CHAR(extract(YEAR from Data)),
DECODE(TO_NUMBER(TO_CHAR(Data,'Q'))
,1,'01'
,2,'02'
,3,'03'
,4,'04'),
DECODE(TO_NUMBER(TO_CHAR(Data,'Q'))
,1,'1º Trimestre'
,2,'2º Trimestre'
,3,'3º Trimestre'
,4,'4º Trimestre'),
TO_CHAR(extract(YEAR from Data)) || DECODE(TO_NUMBER(TO_CHAR(Data,'Q'))
,1,'01'
,2,'01'
,3,'02'
,4,'02')
);
Data := add_months(Data,3);
Data := add_months(Data,1) - extract(DAY from (add_months(Data,1)));
END LOOP;
COMMIT;
END;
-- select * from trimestre
--------------------------------------------------
--Carga dimensão mês (month dimension load)
declare
Data DATE;
DataIni DATE;
DataFim DATE;
Data_Movel DATE;
BEGIN
DataIni := to_date('2000/01/01','yyyy/mm/dd');
DataFim := to_date('2040/12/31','yyyy/mm/dd');
Data := DataIni;
WHILE Data <= DataFim LOOP
INSERT INTO DIM_MES (NUM_ANO_MES, DES_ANO_MES, NUM_MES, DES_MES, DES_MES_ABV, NUM_ANO_TRM,
NUM_ANO_ANT_MES, NUM_ANO_MES_ANT, NUM_ANO_MES_INI_MDL_VLR)
VALUES
(
TO_CHAR(extract(YEAR from Data)) || TO_CHAR(Data, 'MM'),
(CASE extract(MONTH from Data)
WHEN (1) THEN ('Janeiro')
WHEN (2) THEN ('Fevereiro')
WHEN (3) THEN ('Março')
WHEN (4) THEN ('Abril')
WHEN (5) THEN ('Maio')
WHEN (6) THEN ('Junho')
WHEN (7) THEN ('Julho')
WHEN (8) THEN ('Agosto')
WHEN (9) THEN ('Setembro')
WHEN (10) THEN ('Outubro')
WHEN (11) THEN ('Novembro')
WHEN (12) THEN ('Dezembro')
END) || ' de ' || TO_CHAR(extract(YEAR from Data)),
TO_CHAR(Data, 'MM'),
(CASE extract(MONTH from Data)
WHEN (1) THEN ('Janeiro')
WHEN (2) THEN ('Fevereiro')
WHEN (3) THEN ('Março')
WHEN (4) THEN ('Abril')
WHEN (5) THEN ('Maio')
WHEN (6) THEN ('Junho')
WHEN (7) THEN ('Julho')
WHEN (8) THEN ('Agosto')
WHEN (9) THEN ('Setembro')
WHEN (10) THEN ('Outubro')
WHEN (11) THEN ('Novembro')
WHEN (12) THEN ('Dezembro')
END),
(CASE extract(MONTH from Data)
WHEN (1) THEN ('Jan')
WHEN (2) THEN ('Fev')
WHEN (3) THEN ('Mar')
WHEN (4) THEN ('Abr')
WHEN (5) THEN ('Mai')
WHEN (6) THEN ('Jun')
WHEN (7) THEN ('Jul')
WHEN (8) THEN ('Ago')
WHEN (9) THEN ('Set')
WHEN (10) THEN ('Out')
WHEN (11) THEN ('Nov')
WHEN (12) THEN ('Dez')
END),
TO_CHAR(extract(YEAR from Data)) || DECODE(TO_NUMBER(TO_CHAR(Data,'Q'))
,1,'01'
,2,'02'
,3,'03'
,4,'04'),
TO_NUMBER(TO_CHAR(extract(YEAR from Data)) || TO_CHAR(Data, 'MM'))-100,
CASE WHEN extract(MONTH from Data) <> 1
THEN TO_NUMBER(TO_CHAR(extract(YEAR from Data)) || TO_CHAR(Data, 'MM'))-1
ELSE TO_NUMBER(TO_CHAR(extract(YEAR from Data)) || TO_CHAR(Data, 'MM'))-89
END,
TO_NUMBER(TO_CHAR(extract(YEAR from ADD_MONTHS(Data,-3))) || TO_CHAR(ADD_MONTHS(Data,-3), 'MM'))
);
Data := add_months(Data,1);
Data := add_months(Data,1) - extract(DAY from (add_months(Data,1)));
END LOOP;
COMMIT;
END;
-- SELECT * FROM MES ORDER BY 1
--------------------------------------------------
--Carga dimensão Data (Day dimension load)
declare
Data DATE;
DataIni DATE;
DataFim DATE;
Data_Movel DATE;
VarA INT;
VarB INT;
VarC INT;
VarD INT;
VarE INT;
VarF INT;
VarG INT;
VarH INT;
VarI INT;
VarAno INT;
MesPascoa INT;
DiaPascoa INT;
DataPascoaNum INT;
DataPascoa DATE;
DataCarnaval DATE;
DataQuartaCinzas DATE;
DataSextaSanta DATE;
DataCorpusChristi DATE;
BEGIN
DataIni := to_date('2000/01/01','yyyy/mm/dd');
DataFim := to_date('2040/12/31','yyyy/mm/dd');
Data := DataIni;
data_movel := DataFim;
WHILE Data <= DataFim LOOP
--Código para cálculo de feriado móvel.
VarAno := extract(YEAR from Data);
VarA := TRUNC(VarAno/100);
VarB := VarAno-(19*TRUNC(VarAno/19));
VarC := TRUNC((VarA-17)/25);
VarD := VarA-TRUNC(VarA/4)-TRUNC((VarA-VarC)/3)+19*VarB+15;
VarE := VarD-30*TRUNC(VarD/30);
VarF := VarE-(TRUNC(VarE/28)*(1-TRUNC(VarE/28))*TRUNC(29/(VarE+1))*TRUNC(21-VarB/11));
VarG := VarAno+TRUNC(VarAno/4)+VarF+2-VarA+TRUNC(VarA/4);
VarH := VarG-(7*TRUNC(VarG/7));
VarI := VarF-VarH;
MesPascoa := 3+TRUNC((VarI+40)/44);
DiaPascoa := VarI+28-31*TRUNC(MesPascoa/4);
DataPascoaNum := (VarAno * 100 + MesPascoa) * 100 + DiaPascoa;
DataPascoa := TO_DATE(DataPascoaNum, 'yyyymmdd');
DataCarnaval := DataPascoa - 47;
DataQuartaCinzas := DataCarnaval + 1;
DataSextaSanta := DataPascoa - 2;
DataCorpusChristi := DataPascoa + 60;
INSERT INTO DIM_DATA ( DAT_DIA, NUM_ANO_MES, NUM_DIA_SEM, DES_DIA_SEM, DES_DIA_SEM_ABV, IND_DIA_UTL, IND_FRD, DES_FRD,
DAT_DIA_ANT, DAT_PRI_DIA_MES, DAT_ULT_DIA_MES, DAT_INI_MDL_VLR, NUM_ANO,
NUM_ANO_SMT, NUM_ANO_TRM, DAT_ANO_ANT, DAT_ULT_DIA_MES_ANT )
VALUES
(
TO_DATE(Data,'DD/MM/YY'),
TO_NUMBER(TO_CHAR(extract(YEAR from Data)) || TO_CHAR(Data, 'MM')),
TO_NUMBER( TO_CHAR (Data, 'D') ),
CASE TO_NUMBER( TO_CHAR (Data, 'D') )
WHEN 1 THEN 'Domingo'
WHEN 2 THEN 'Segunda-feira'
WHEN 3 THEN 'Terça-feira'
WHEN 4 THEN 'Quarta-feira'
WHEN 5 THEN 'Quinta-feira'
WHEN 6 THEN 'Sexta-feira'
WHEN 7 THEN 'Sábado'
END,
CASE TO_NUMBER( TO_CHAR (Data, 'D') )
WHEN 1 THEN 'Dom'
WHEN 2 THEN 'Seg'
WHEN 3 THEN 'Ter'
WHEN 4 THEN 'Qua'
WHEN 5 THEN 'Qui'
WHEN 6 THEN 'Sex'
WHEN 7 THEN 'Sáb'
END,
CASE WHEN EXTRACT(MONTH from Data) * 100 + EXTRACT(DAY from Data)
IN (101, 421, 501, 907, 1012, 1102, 1115, 1225, 125, 709, 1120,
-- EXTRACT(MONTH from DataCarnaval) * 100 + EXTRACT(DAY from DataCarnaval),
-- EXTRACT(MONTH from DataQuartaCinzas) * 100 + EXTRACT(DAY from DataQuartaCinzas),
EXTRACT(MONTH from DataSextaSanta) * 100 + EXTRACT(DAY from DataSextaSanta),
EXTRACT(MONTH from DataCorpusChristi) * 100 + EXTRACT(DAY from DataCorpusChristi) )
OR ( TO_NUMBER( TO_CHAR (Data, 'D') ) IN (1,7) )
THEN 'N'
ELSE 'S'
END,
CASE WHEN EXTRACT(MONTH from Data) * 100 + EXTRACT(DAY from Data)
IN (101, 421, 501, 907, 1012, 1102, 1115, 1225, 125, 709, 1120,
-- EXTRACT(MONTH from DataCarnaval) * 100 + EXTRACT(DAY from DataCarnaval),
-- EXTRACT(MONTH from DataQuartaCinzas) * 100 + EXTRACT(DAY from DataQuartaCinzas),
EXTRACT(MONTH from DataSextaSanta) * 100 + EXTRACT(DAY from DataSextaSanta),
EXTRACT(MONTH from DataCorpusChristi) * 100 + EXTRACT(DAY from DataCorpusChristi) )
THEN 'S'
ELSE 'N'
END,
CASE EXTRACT(MONTH from Data) * 100 + EXTRACT(DAY from Data)
WHEN 101 THEN 'Confraternização Universal' --01/01
WHEN 421 THEN 'Tiradentes' -- 21/04
WHEN 501 THEN 'Dia do Trabalho' -- 01/05
WHEN 907 THEN 'Idependência do Brasil' -- 07/09
WHEN 1012 THEN 'Nossa Sra. Aparecida' -- 12/10
WHEN 1102 THEN 'Finados' -- 02/11
WHEN 1115 THEN 'Proclamação da República' -- 15/11
WHEN 1225 THEN 'Natal' -- 25/12
WHEN 125 THEN 'Aniversário de São Paulo' -- 25/01
WHEN 709 THEN 'Revolução Constitucionalista de 1932' -- 09/07
WHEN 1120 THEN 'Consciência Negra' -- 20/11
WHEN EXTRACT(MONTH from DataPascoa) * 100 + EXTRACT(DAY from DataPascoa) THEN 'Páscoa'
WHEN EXTRACT(MONTH from DataCarnaval) * 100 + EXTRACT(DAY from DataCarnaval) THEN 'Carnaval'
WHEN EXTRACT(MONTH from DataQuartaCinzas) * 100 + EXTRACT(DAY from DataQuartaCinzas) THEN 'Quarta-feira de Cinzas'
WHEN EXTRACT(MONTH from DataSextaSanta) * 100 + EXTRACT(DAY from DataSextaSanta) THEN 'Sexta-feira da Paixão'
WHEN EXTRACT(MONTH from DataCorpusChristi) * 100 + EXTRACT(DAY from DataCorpusChristi) THEN 'Corpus Christi'
ELSE ('NA')
END ,
TO_CHAR(Data - 1,'DD/MM/YYYY'),
TO_CHAR((Data - extract(DAY from (Data))) + 1,'DD/MM/YYYY'),
TO_CHAR(ADD_MONTHS(Data,1) - extract(DAY from (Data)),'DD/MM/YYYY') ,
TO_CHAR((ADD_MONTHS(Data,-3) - extract(DAY from (Data))) + 1,'DD/MM/YYYY'),
TO_CHAR(extract(YEAR from Data)),
TO_CHAR(extract(YEAR from Data)) || DECODE(TO_NUMBER(TO_CHAR(Data,'Q'))
,1,'01'
,2,'01'
,3,'02'
,4,'02'),
TO_CHAR(extract(YEAR from Data)) || DECODE(TO_NUMBER(TO_CHAR(Data,'Q'))
,1,'01'
,2,'02'
,3,'03'
,4,'04'),
add_months(Data,-12),
TO_CHAR(Data - extract(DAY from Data),'DD/MM/YYYY')
);
Data := Data + 1;
END LOOP;
COMMIT;
END;
/*
select * from data
WHERE NUM_ANO_MES = 200011
--AND DES_FRD <> 'NA'
order by 1
*/--------------------------------------------------
Autor: Erick Furst
Empresa: Core Synesis
Data: 20/08/2015
Descrição: Processo para carga da Dimensão Tempo.
--------------------------------------------------
--Carga dimensão Ano (Year dimension load)
declare
Data DATE;
DataIni DATE;
DataFim DATE;
Data_Movel DATE;
BEGIN
DataIni := to_date('2000/01/01','yyyy/mm/dd');
DataFim := to_date('2040/12/31','yyyy/mm/dd');
Data := DataIni;
WHILE Data <= DataFim LOOP
INSERT INTO DIM_ANO ( NUM_ANO, NUM_ANO_ANT )
VALUES ( TO_CHAR(extract(YEAR from Data)), TO_CHAR(extract(YEAR from Data)-1) );
Data := add_months(Data,12);
Data := add_months(Data,1) - extract(DAY from (add_months(Data,1)));
END LOOP;
COMMIT;
END;
-- select * from ano
--------------------------------------------------
--Carga dimensão Semestre (Six month period dimension load)
declare
Data DATE;
DataIni DATE;
DataFim DATE;
Data_Movel DATE;
BEGIN
DataIni := to_date('2000/01/01','yyyy/mm/dd');
DataFim := to_date('2040/12/31','yyyy/mm/dd');
Data := DataIni;
WHILE Data <= DataFim LOOP
INSERT INTO DIM_SEMESTRE(NUM_ANO_SMT, DES_ANO_SMT, NUM_SMT, DES_SMT, NUM_ANO )
VALUES
(
TO_CHAR(extract(YEAR from Data)) || DECODE(TO_NUMBER(TO_CHAR(Data,'Q'))
,1,'01'
,2,'01'
,3,'02'
,4,'02'),
DECODE(TO_NUMBER(TO_CHAR(Data,'Q'))
,1,'1º Semestre de '
,2,'1º Semestre de '
,3,'2º Semestre de '
,4,'2º Semestre de ') || TO_CHAR(extract(YEAR from Data)),
DECODE(TO_NUMBER(TO_CHAR(Data,'Q'))
,1,'01'
,2,'01'
,3,'02'
,4,'02'),
DECODE(TO_NUMBER(TO_CHAR(Data,'Q'))
,1,'1º Semestre'
,2,'1º Semestre'
,3,'2º Semestre'
,4,'2º Semestre'),
TO_CHAR(extract(YEAR from Data))
);
Data := add_months(Data,6);
Data := add_months(Data,1) - extract(DAY from (add_months(Data,1)));
END LOOP;
COMMIT;
END;
-- select * from semestre
--------------------------------------------------
--Carga dimensão trimestre (Quarter dimension load)
declare
Data DATE;
DataIni DATE;
DataFim DATE;
Data_Movel DATE;
BEGIN
DataIni := to_date('2000/01/01','yyyy/mm/dd');
DataFim := to_date('2040/12/31','yyyy/mm/dd');
Data := DataIni;
WHILE Data <= DataFim LOOP
INSERT INTO DIM_TRIMESTRE(NUM_ANO_TRM, DES_ANO_TRM, NUM_TRM, DES_TRM, NUM_ANO_SMT)
VALUES
(
TO_CHAR(extract(YEAR from Data)) || DECODE(TO_NUMBER(TO_CHAR(Data,'Q'))
,1,'01'
,2,'02'
,3,'03'
,4,'04'),
DECODE(TO_NUMBER(TO_CHAR(Data,'Q'))
,1,'1º Trimestre de '
,2,'2º Trimestre de '
,3,'3º Trimestre de '
,4,'4º Trimestre de ') || TO_CHAR(extract(YEAR from Data)),
DECODE(TO_NUMBER(TO_CHAR(Data,'Q'))
,1,'01'
,2,'02'
,3,'03'
,4,'04'),
DECODE(TO_NUMBER(TO_CHAR(Data,'Q'))
,1,'1º Trimestre'
,2,'2º Trimestre'
,3,'3º Trimestre'
,4,'4º Trimestre'),
TO_CHAR(extract(YEAR from Data)) || DECODE(TO_NUMBER(TO_CHAR(Data,'Q'))
,1,'01'
,2,'01'
,3,'02'
,4,'02')
);
Data := add_months(Data,3);
Data := add_months(Data,1) - extract(DAY from (add_months(Data,1)));
END LOOP;
COMMIT;
END;
-- select * from trimestre
--------------------------------------------------
--Carga dimensão mês (month dimension load)
declare
Data DATE;
DataIni DATE;
DataFim DATE;
Data_Movel DATE;
BEGIN
DataIni := to_date('2000/01/01','yyyy/mm/dd');
DataFim := to_date('2040/12/31','yyyy/mm/dd');
Data := DataIni;
WHILE Data <= DataFim LOOP
INSERT INTO DIM_MES (NUM_ANO_MES, DES_ANO_MES, NUM_MES, DES_MES, DES_MES_ABV, NUM_ANO_TRM,
NUM_ANO_ANT_MES, NUM_ANO_MES_ANT, NUM_ANO_MES_INI_MDL_VLR)
VALUES
(
TO_CHAR(extract(YEAR from Data)) || TO_CHAR(Data, 'MM'),
(CASE extract(MONTH from Data)
WHEN (1) THEN ('Janeiro')
WHEN (2) THEN ('Fevereiro')
WHEN (3) THEN ('Março')
WHEN (4) THEN ('Abril')
WHEN (5) THEN ('Maio')
WHEN (6) THEN ('Junho')
WHEN (7) THEN ('Julho')
WHEN (8) THEN ('Agosto')
WHEN (9) THEN ('Setembro')
WHEN (10) THEN ('Outubro')
WHEN (11) THEN ('Novembro')
WHEN (12) THEN ('Dezembro')
END) || ' de ' || TO_CHAR(extract(YEAR from Data)),
TO_CHAR(Data, 'MM'),
(CASE extract(MONTH from Data)
WHEN (1) THEN ('Janeiro')
WHEN (2) THEN ('Fevereiro')
WHEN (3) THEN ('Março')
WHEN (4) THEN ('Abril')
WHEN (5) THEN ('Maio')
WHEN (6) THEN ('Junho')
WHEN (7) THEN ('Julho')
WHEN (8) THEN ('Agosto')
WHEN (9) THEN ('Setembro')
WHEN (10) THEN ('Outubro')
WHEN (11) THEN ('Novembro')
WHEN (12) THEN ('Dezembro')
END),
(CASE extract(MONTH from Data)
WHEN (1) THEN ('Jan')
WHEN (2) THEN ('Fev')
WHEN (3) THEN ('Mar')
WHEN (4) THEN ('Abr')
WHEN (5) THEN ('Mai')
WHEN (6) THEN ('Jun')
WHEN (7) THEN ('Jul')
WHEN (8) THEN ('Ago')
WHEN (9) THEN ('Set')
WHEN (10) THEN ('Out')
WHEN (11) THEN ('Nov')
WHEN (12) THEN ('Dez')
END),
TO_CHAR(extract(YEAR from Data)) || DECODE(TO_NUMBER(TO_CHAR(Data,'Q'))
,1,'01'
,2,'02'
,3,'03'
,4,'04'),
TO_NUMBER(TO_CHAR(extract(YEAR from Data)) || TO_CHAR(Data, 'MM'))-100,
CASE WHEN extract(MONTH from Data) <> 1
THEN TO_NUMBER(TO_CHAR(extract(YEAR from Data)) || TO_CHAR(Data, 'MM'))-1
ELSE TO_NUMBER(TO_CHAR(extract(YEAR from Data)) || TO_CHAR(Data, 'MM'))-89
END,
TO_NUMBER(TO_CHAR(extract(YEAR from ADD_MONTHS(Data,-3))) || TO_CHAR(ADD_MONTHS(Data,-3), 'MM'))
);
Data := add_months(Data,1);
Data := add_months(Data,1) - extract(DAY from (add_months(Data,1)));
END LOOP;
COMMIT;
END;
-- SELECT * FROM MES ORDER BY 1
--------------------------------------------------
--Carga dimensão Data (Day dimension load)
declare
Data DATE;
DataIni DATE;
DataFim DATE;
Data_Movel DATE;
VarA INT;
VarB INT;
VarC INT;
VarD INT;
VarE INT;
VarF INT;
VarG INT;
VarH INT;
VarI INT;
VarAno INT;
MesPascoa INT;
DiaPascoa INT;
DataPascoaNum INT;
DataPascoa DATE;
DataCarnaval DATE;
DataQuartaCinzas DATE;
DataSextaSanta DATE;
DataCorpusChristi DATE;
BEGIN
DataIni := to_date('2000/01/01','yyyy/mm/dd');
DataFim := to_date('2040/12/31','yyyy/mm/dd');
Data := DataIni;
data_movel := DataFim;
WHILE Data <= DataFim LOOP
--Código para cálculo de feriado móvel.
VarAno := extract(YEAR from Data);
VarA := TRUNC(VarAno/100);
VarB := VarAno-(19*TRUNC(VarAno/19));
VarC := TRUNC((VarA-17)/25);
VarD := VarA-TRUNC(VarA/4)-TRUNC((VarA-VarC)/3)+19*VarB+15;
VarE := VarD-30*TRUNC(VarD/30);
VarF := VarE-(TRUNC(VarE/28)*(1-TRUNC(VarE/28))*TRUNC(29/(VarE+1))*TRUNC(21-VarB/11));
VarG := VarAno+TRUNC(VarAno/4)+VarF+2-VarA+TRUNC(VarA/4);
VarH := VarG-(7*TRUNC(VarG/7));
VarI := VarF-VarH;
MesPascoa := 3+TRUNC((VarI+40)/44);
DiaPascoa := VarI+28-31*TRUNC(MesPascoa/4);
DataPascoaNum := (VarAno * 100 + MesPascoa) * 100 + DiaPascoa;
DataPascoa := TO_DATE(DataPascoaNum, 'yyyymmdd');
DataCarnaval := DataPascoa - 47;
DataQuartaCinzas := DataCarnaval + 1;
DataSextaSanta := DataPascoa - 2;
DataCorpusChristi := DataPascoa + 60;
INSERT INTO DIM_DATA ( DAT_DIA, NUM_ANO_MES, NUM_DIA_SEM, DES_DIA_SEM, DES_DIA_SEM_ABV, IND_DIA_UTL, IND_FRD, DES_FRD,
DAT_DIA_ANT, DAT_PRI_DIA_MES, DAT_ULT_DIA_MES, DAT_INI_MDL_VLR, NUM_ANO,
NUM_ANO_SMT, NUM_ANO_TRM, DAT_ANO_ANT, DAT_ULT_DIA_MES_ANT )
VALUES
(
TO_DATE(Data,'DD/MM/YY'),
TO_NUMBER(TO_CHAR(extract(YEAR from Data)) || TO_CHAR(Data, 'MM')),
TO_NUMBER( TO_CHAR (Data, 'D') ),
CASE TO_NUMBER( TO_CHAR (Data, 'D') )
WHEN 1 THEN 'Domingo'
WHEN 2 THEN 'Segunda-feira'
WHEN 3 THEN 'Terça-feira'
WHEN 4 THEN 'Quarta-feira'
WHEN 5 THEN 'Quinta-feira'
WHEN 6 THEN 'Sexta-feira'
WHEN 7 THEN 'Sábado'
END,
CASE TO_NUMBER( TO_CHAR (Data, 'D') )
WHEN 1 THEN 'Dom'
WHEN 2 THEN 'Seg'
WHEN 3 THEN 'Ter'
WHEN 4 THEN 'Qua'
WHEN 5 THEN 'Qui'
WHEN 6 THEN 'Sex'
WHEN 7 THEN 'Sáb'
END,
CASE WHEN EXTRACT(MONTH from Data) * 100 + EXTRACT(DAY from Data)
IN (101, 421, 501, 907, 1012, 1102, 1115, 1225, 125, 709, 1120,
-- EXTRACT(MONTH from DataCarnaval) * 100 + EXTRACT(DAY from DataCarnaval),
-- EXTRACT(MONTH from DataQuartaCinzas) * 100 + EXTRACT(DAY from DataQuartaCinzas),
EXTRACT(MONTH from DataSextaSanta) * 100 + EXTRACT(DAY from DataSextaSanta),
EXTRACT(MONTH from DataCorpusChristi) * 100 + EXTRACT(DAY from DataCorpusChristi) )
OR ( TO_NUMBER( TO_CHAR (Data, 'D') ) IN (1,7) )
THEN 'N'
ELSE 'S'
END,
CASE WHEN EXTRACT(MONTH from Data) * 100 + EXTRACT(DAY from Data)
IN (101, 421, 501, 907, 1012, 1102, 1115, 1225, 125, 709, 1120,
-- EXTRACT(MONTH from DataCarnaval) * 100 + EXTRACT(DAY from DataCarnaval),
-- EXTRACT(MONTH from DataQuartaCinzas) * 100 + EXTRACT(DAY from DataQuartaCinzas),
EXTRACT(MONTH from DataSextaSanta) * 100 + EXTRACT(DAY from DataSextaSanta),
EXTRACT(MONTH from DataCorpusChristi) * 100 + EXTRACT(DAY from DataCorpusChristi) )
THEN 'S'
ELSE 'N'
END,
CASE EXTRACT(MONTH from Data) * 100 + EXTRACT(DAY from Data)
WHEN 101 THEN 'Confraternização Universal' --01/01
WHEN 421 THEN 'Tiradentes' -- 21/04
WHEN 501 THEN 'Dia do Trabalho' -- 01/05
WHEN 907 THEN 'Idependência do Brasil' -- 07/09
WHEN 1012 THEN 'Nossa Sra. Aparecida' -- 12/10
WHEN 1102 THEN 'Finados' -- 02/11
WHEN 1115 THEN 'Proclamação da República' -- 15/11
WHEN 1225 THEN 'Natal' -- 25/12
WHEN 125 THEN 'Aniversário de São Paulo' -- 25/01
WHEN 709 THEN 'Revolução Constitucionalista de 1932' -- 09/07
WHEN 1120 THEN 'Consciência Negra' -- 20/11
WHEN EXTRACT(MONTH from DataPascoa) * 100 + EXTRACT(DAY from DataPascoa) THEN 'Páscoa'
WHEN EXTRACT(MONTH from DataCarnaval) * 100 + EXTRACT(DAY from DataCarnaval) THEN 'Carnaval'
WHEN EXTRACT(MONTH from DataQuartaCinzas) * 100 + EXTRACT(DAY from DataQuartaCinzas) THEN 'Quarta-feira de Cinzas'
WHEN EXTRACT(MONTH from DataSextaSanta) * 100 + EXTRACT(DAY from DataSextaSanta) THEN 'Sexta-feira da Paixão'
WHEN EXTRACT(MONTH from DataCorpusChristi) * 100 + EXTRACT(DAY from DataCorpusChristi) THEN 'Corpus Christi'
ELSE ('NA')
END ,
TO_CHAR(Data - 1,'DD/MM/YYYY'),
TO_CHAR((Data - extract(DAY from (Data))) + 1,'DD/MM/YYYY'),
TO_CHAR(ADD_MONTHS(Data,1) - extract(DAY from (Data)),'DD/MM/YYYY') ,
TO_CHAR((ADD_MONTHS(Data,-3) - extract(DAY from (Data))) + 1,'DD/MM/YYYY'),
TO_CHAR(extract(YEAR from Data)),
TO_CHAR(extract(YEAR from Data)) || DECODE(TO_NUMBER(TO_CHAR(Data,'Q'))
,1,'01'
,2,'01'
,3,'02'
,4,'02'),
TO_CHAR(extract(YEAR from Data)) || DECODE(TO_NUMBER(TO_CHAR(Data,'Q'))
,1,'01'
,2,'02'
,3,'03'
,4,'04'),
add_months(Data,-12),
TO_CHAR(Data - extract(DAY from Data),'DD/MM/YYYY')
);
Data := Data + 1;
END LOOP;
COMMIT;
END;
/*
select * from data
WHERE NUM_ANO_MES = 200011
--AND DES_FRD <> 'NA'
order by 1
*/--------------------------------------------------
quinta-feira, 7 de agosto de 2014
Pentaho Data Integration (PDI) - Kettle
Pentaho Data Integration (PDI) - Kettle
Neste Tutorial: - Video 1 (In this Tutorial: - Video 1)
Criar Transformação (Create Transformation)
Criar Conexão de BD (Create DB Connection)
Neste Tutorial: - Video 2 (In this Tutorial: - Video 2 )
Criar Consultas (Create Queries )
Criar Joins (Crate Joins )
Ordenação (Sorting)
Neste Tutorial: - Video 3 ( In this Tutorial: - Video 3 )
Concatenação (Concatenation)
Data Sistema (System Date)
LEFT e CASE (LEFT and CASE sintax)
Neste Tutorial: - Video 4 (In this Tutorial: - Video 4)
Técnicas de validação e retorno de campo (Lookup). -Validation techniques and field return (Lookup). -
Neste Tutorial: - Video 5 (In this Tutorial: - Video 5)
Uso de variáveis (Variables)
Neste Tutorial: - Video 6 (In this Tutorial: - Video 6)
Java Script
Validação e criação de campo indicador (Validation and flag field)
Neste Tutorial: - Video 1 (In this Tutorial: - Video 1)
Criar Transformação (Create Transformation)
Criar Conexão de BD (Create DB Connection)
Neste Tutorial: - Video 2 (In this Tutorial: - Video 2 )
Criar Consultas (Create Queries )
Criar Joins (Crate Joins )
Ordenação (Sorting)
Neste Tutorial: - Video 3 ( In this Tutorial: - Video 3 )
Concatenação (Concatenation)
Data Sistema (System Date)
LEFT e CASE (LEFT and CASE sintax)
Neste Tutorial: - Video 4 (In this Tutorial: - Video 4)
Técnicas de validação e retorno de campo (Lookup). -Validation techniques and field return (Lookup). -
Neste Tutorial: - Video 5 (In this Tutorial: - Video 5)
Uso de variáveis (Variables)
Neste Tutorial: - Video 6 (In this Tutorial: - Video 6)
Java Script
Validação e criação de campo indicador (Validation and flag field)
quinta-feira, 20 de fevereiro de 2014
quarta-feira, 9 de outubro de 2013
Treinamento ODI 11G (ODI 11G Training) 4/14
Vídeo número 4 (Video # four):
Português:
Criar Contexto, Arquitetura Física e Lógica e Modelos.
(Create Context, Logical and Physical Architecture and Models)
Video Transcript:
Português:
Click no botão para criar um novo contexto.
Informe o nome do contexto.
Digite: Development
Informe o código do contexto.
Digite: CONTEXT1
Informe a senha.
Digite: oracle1
Marque o checkbox: Default
Agora crie a arquitetura física.
Escolha o item "Oracle" e em seguida "Novo Servidor de Dados".
Digite o nome da conexão.
Como boa prática para a formação do nome, digite primeiro o SID e em seguidao nome do esquema.
Digite: ORCL_TRNREL
Informe o SID.
Digite: orcl
Informe o usuário.
Digite: TrRel
Informe a senha.
Digite: Laboratoriosql1
Informe o driver JDBC.
Informe a URL.
Informe o nome da conexão.
Digite: ORCL_TRNDIM
Informe o SID.
Digite: orcl
Informe o usuário.
Digite: TrDim
Informe a senha.
Digite: Laboratoriosql1
Informe o driver e a URL.
Crie a Arquitetura Lógica.
Escolha a opção "Oracle" e em seguida "Novo Esquema Lógico".
Informe o nome do esquema lógico.
Digite: ORCL_TRNREL
Agora crie o esquema lógico para a conexão com o banco de dados de destino.
Informe o nome do esquema lógico.
Digite: ORCL_TRNDIM
De volta à Arquitetura física crie um esquema físico para cada conexão com o BD.
Click com o botão direito sobre a conexão e escolha a opção "Novo Esquema Físico".
Associe a conexão com o esquema físico.
Adicione o contexto.
Associe o esquema físico ao esquema lógico.
Repita o processo para a conexão com o banco de dados de origem.
Agora crie um modelo para cada esquema (Origem e Destino). E importe as tabelas.
Digite o nome da pasta que irá conter os modelos dos dados de origem.
Digite o nome da pasta que irá conter os modelos dos dados de destino.
Click com o botão direito do mouse sobre a pasta "Origem" e escolha a opção "Novo Modelo".
Click vom o botão direito do mouse sobre a pasta "Origem" e escolha a opção "Novo Modelo".
Informe o nome do modelo.
Digite: TrnRel
Informe a Tecnologia.
Escolha: Oracle
Associe ao esquema lógico.
Escolha: ORCL_TRNREL
Click no botão [Engenharia Reversa] para retornar as tabelas do banco de origem.
Repita o processo para o banco de dados de destino.
Click com o botão direito do mouse sobre uma tabela e escolha a opção "Dados".
Fim do vídeo.
English:
Click the button to create a new context .
Enter the name of the context .
Type : Development
Enter the code context .
Type : Context1
Enter the password .
Type : ORACLE1
Mark the checkbox : Default
Now create the physical architecture .
Choose the item " Oracle " and then " New Data Server " .
Enter the connection name .
As good practice for the training name , first enter the SID and seguidao schema name .
Type : ORCL_TRNREL
Enter the SID .
Type : orcl
Inform the user .
Type : TrRel
Enter the password .
Type : Laboratoriosql1
Enter the JDBC driver .
Enter the URL .
Enter the name of the connection.
Type : ORCL_TRNDIM
Enter the SID .
Type : orcl
Inform the user .
Type : TrDim
Enter the password .
Type : Laboratoriosql1
Tell the driver and URL .
Create Logical Architecture .
Choose the " Oracle " and then " New Logical Schema " .
Enter the name of the logical schema .
Type : ORCL_TRNREL
Now create the logical schema to connect to the target database .
Enter the name of the logical schema .
Type : ORCL_TRNDIM
Back to Physical Architecture create a physical schema for each connection to the database .
Right click on the link and choose " New Physical Schema " .
Associate the connection with the physical schema .
Add context.
Associate the physical schema to the logical schema .
Repeat the process for connecting to the database source .
Now create a template for each schema ( Origin and Destination ) . And import the tables .
Enter the name of the folder that will contain models of the source data .
Enter the name of the folder that will contain the target data models .
Click with the right mouse button on the folder "Source" and choose " New Model " .
Click vom right- click on the folder "Source" and choose " New Model " .
Enter the model name .
Type : TrnRel
Notify Technology .
Choose : Oracle
Assign the logical schema .
Choose : ORCL_TRNREL
Click the button [ Reverse Engineering ] to return the database tables of origin .
Repeat the process for the database target .
Click with the right mouse button on a table and choose " Data " .
End of video.
Informe o nome do contexto.
Digite: Development
Informe o código do contexto.
Digite: CONTEXT1
Informe a senha.
Digite: oracle1
Marque o checkbox: Default
Agora crie a arquitetura física.
Escolha o item "Oracle" e em seguida "Novo Servidor de Dados".
Digite o nome da conexão.
Como boa prática para a formação do nome, digite primeiro o SID e em seguidao nome do esquema.
Digite: ORCL_TRNREL
Informe o SID.
Digite: orcl
Informe o usuário.
Digite: TrRel
Informe a senha.
Digite: Laboratoriosql1
Informe o driver JDBC.
Informe a URL.
Informe o nome da conexão.
Digite: ORCL_TRNDIM
Informe o SID.
Digite: orcl
Informe o usuário.
Digite: TrDim
Informe a senha.
Digite: Laboratoriosql1
Informe o driver e a URL.
Crie a Arquitetura Lógica.
Escolha a opção "Oracle" e em seguida "Novo Esquema Lógico".
Informe o nome do esquema lógico.
Digite: ORCL_TRNREL
Agora crie o esquema lógico para a conexão com o banco de dados de destino.
Informe o nome do esquema lógico.
Digite: ORCL_TRNDIM
De volta à Arquitetura física crie um esquema físico para cada conexão com o BD.
Click com o botão direito sobre a conexão e escolha a opção "Novo Esquema Físico".
Associe a conexão com o esquema físico.
Adicione o contexto.
Associe o esquema físico ao esquema lógico.
Repita o processo para a conexão com o banco de dados de origem.
Agora crie um modelo para cada esquema (Origem e Destino). E importe as tabelas.
Digite o nome da pasta que irá conter os modelos dos dados de origem.
Digite o nome da pasta que irá conter os modelos dos dados de destino.
Click com o botão direito do mouse sobre a pasta "Origem" e escolha a opção "Novo Modelo".
Click vom o botão direito do mouse sobre a pasta "Origem" e escolha a opção "Novo Modelo".
Informe o nome do modelo.
Digite: TrnRel
Informe a Tecnologia.
Escolha: Oracle
Associe ao esquema lógico.
Escolha: ORCL_TRNREL
Click no botão [Engenharia Reversa] para retornar as tabelas do banco de origem.
Repita o processo para o banco de dados de destino.
Click com o botão direito do mouse sobre uma tabela e escolha a opção "Dados".
Fim do vídeo.
English:
Click the button to create a new context .
Enter the name of the context .
Type : Development
Enter the code context .
Type : Context1
Enter the password .
Type : ORACLE1
Mark the checkbox : Default
Now create the physical architecture .
Choose the item " Oracle " and then " New Data Server " .
Enter the connection name .
As good practice for the training name , first enter the SID and seguidao schema name .
Type : ORCL_TRNREL
Enter the SID .
Type : orcl
Inform the user .
Type : TrRel
Enter the password .
Type : Laboratoriosql1
Enter the JDBC driver .
Enter the URL .
Enter the name of the connection.
Type : ORCL_TRNDIM
Enter the SID .
Type : orcl
Inform the user .
Type : TrDim
Enter the password .
Type : Laboratoriosql1
Tell the driver and URL .
Create Logical Architecture .
Choose the " Oracle " and then " New Logical Schema " .
Enter the name of the logical schema .
Type : ORCL_TRNREL
Now create the logical schema to connect to the target database .
Enter the name of the logical schema .
Type : ORCL_TRNDIM
Back to Physical Architecture create a physical schema for each connection to the database .
Right click on the link and choose " New Physical Schema " .
Associate the connection with the physical schema .
Add context.
Associate the physical schema to the logical schema .
Repeat the process for connecting to the database source .
Now create a template for each schema ( Origin and Destination ) . And import the tables .
Enter the name of the folder that will contain models of the source data .
Enter the name of the folder that will contain the target data models .
Click with the right mouse button on the folder "Source" and choose " New Model " .
Click vom right- click on the folder "Source" and choose " New Model " .
Enter the model name .
Type : TrnRel
Notify Technology .
Choose : Oracle
Assign the logical schema .
Choose : ORCL_TRNREL
Click the button [ Reverse Engineering ] to return the database tables of origin .
Repeat the process for the database target .
Click with the right mouse button on a table and choose " Data " .
End of video.
Subscrever:
Mensagens (Atom)