Superintendência Estadual de Tecnologia da Informação e Comunicação

Plataforma de documentação operacional e gerencial da SETIC

Ferramentas do usuário

Ferramentas do site


start:projetos:projetos_dev:sedi_data_mart_emprego:documentacao

Essa é uma revisão anterior do documento!


Documentação do Projeto

Histórico de Alterações
Data Versão Descrição Autor
04/09/2019 1.0 Criação da documentação modelo Rodrigo Arnaldo Kreuzberg
11/09/2019 1.1 Documentação da Dimensão CNAE HUDSON FERNANDO MENDES DE FRANÇA
11/09/2019 1.2 Documentação da Dimensão IBGE Subsetor HUDSON FERNANDO MENDES DE FRANÇA
13/09/2019 1.3 Documentação da Dimensão Empregado (Cargas dimensões) HUDSON FERNANDO MENDES DE FRANÇA
16/09/2019 1.4 Correção da Documentação da Dimensão Empregado - Correção visual da tabela Dimensão x Indicadores HUDSON FERNANDO MENDES DE FRANÇA
18/09/2019 1.5 Documentação da Dimensão Ocupação Rodrigo Arnaldo Kreuzberg
20/09/2019 1.6 Inclusão da periodicidade da fonte de dados Rodrigo Arnaldo Kreuzberg
23/09/2019 1.7 Documentação da Dimensão Tempo HUDSON FERNANDO MENDES DE FRANÇA
09/10/2019 1.8 Atualização das dimensões HUDSON FERNANDO MENDES DE FRANÇA
11/10/2019 1.9 Atualização das dimensões e inserção da fato emprego Rodrigo Arnaldo Kreuzberg
14/11/2019 1.10 Documentação da Tabela Fato, da Dimensão Tempo e Revisão das demais dimensões com inserção de novos prints das mesmas. Abdenildo Deividy Sobreira dos Santos

Canvas

A ideia do BMC ou do Quadro de Modelos de Negócios é fazer o Business Plan, um Plano de Negócio macro, ou seja, planejar e visualizar as principais demandas de um negócio, para qualquer setor, de uma forma muito mais rápida e barata do que fazer um Business Plan no modo tradicional, como um primeiro rabisco.

A relização do canvas para o Data Mart de Emprego ocorreram em dois encontros nos dias 22, 29 e 30 de Julho de 2019 e com os seguintes envolvidos:

  • Thalles - SEDI
  • Ederson - SEDI
  • Heraclito Ferreira - SEDI
  • Lucas Lemos - SEDI
  • Maico Moreira - EpR
  • David - EpR

O produto dos encontros está diponível neste link

Matriz de Necessidades

Indicadores

Qual o total de admissões? Total de Admissões realizadas no Estado de Rondônia, campo UF valor [11], é considerada admissão todos os registros na base de dados do CAGED cujo campo Admitidos/Desligados contenha o valor [ 1 ]
Qual o total de desligamentos? Total de Desligamentos realizadas no Estado de Rondônia, campo UF valor [11], é considerada admissão todos os registros na base de dados do CAGED cujo campo Admitidos/Desligados contenha o valor [ 2 ]
Qual o saldo mensal? Resultado to Total de Admissões subtraindo-se o Total de Demissões, mês a mês

DIMENSÕES


Identificação e Validação das fontes


Modelagem

Matriz Dimensão x Indicador

Indicadores x Dimensões Tempo Empregado CNAE Regiões Geográficas Ocupação Total de Admissão
Total de Admissão X X X
Total de desligamento X X X
Saldo mensal X X X

Validação com o cliente

A plenária realizada no dia 12 de Agosto de 2019 aprovou a modelagem realizada pelo Time Baymax.

ETL - Extração, Transformação e Carregamento

Carregar a Stagin Area

Os arquivos utilizados para realização da Stagin Area estão disponíveis no Gitlab Detic.

Tratar os dados

ETL - Dimensões ETL - Dimensão tempo Carga Fato

Construir o metadado

Elaborar Dicionário de Dados

Script de criação das tabelas do Data Mart

script_dim_cbo_2002_ocupacao.sql
CREATE TABLE dm_emprego.dim_cbo_2002_ocupacao (
    codigo int8 NULL,
    descricao VARCHAR(200) NULL
);
script_dim_cbo_94_ocupacao.sql
CREATE TABLE dm_emprego.dim_cbo_94_ocupacao (
    codigo int8 NULL,
    descricao VARCHAR(200) NULL
);
script_dim_classe_10.sql
CREATE TABLE dm_emprego.dim_classe_10 (
    descricao VARCHAR(200) NULL,
    codigo VARCHAR(15) NULL
);
script_dim_cnae_20_subclas.sql
CREATE TABLE dm_emprego.dim_cnae_20_subclas (
    descricao VARCHAR(200) NULL,
    codigo VARCHAR(15) NULL
);
script_dim_cnae_2_classe.sql
CREATE TABLE dm_emprego.dim_cnae_2_classe (
    codigo VARCHAR(15) NULL,
    descricao VARCHAR(200) NULL
);
script_dim_empregados.sql
CREATE TABLE dm_emprego.dim_empregados (
    cod_sexo int8 NULL,
    cod_ano int8 NULL,
    sexo VARCHAR(9) NULL,
    cod_grau_instrucao int8 NULL,
    grau_instrucao VARCHAR(23) NULL
);
script_dim_ibge_subsetor.sql
CREATE TABLE dm_emprego.dim_ibge_subsetor (
    categorias VARCHAR(67) NULL,
    valor_na_fonte int4 NULL
);
script_dim_mesorregiao.sql
CREATE TABLE dm_emprego.dim_mesorregiao (
    codigo int8 NULL,
    descricao VARCHAR(200) NULL
);
script_dim_microrregiao.sql
CREATE TABLE dm_emprego.dim_microrregiao (
    codigo int8 NULL,
    descricao VARCHAR(200) NULL
);
script_dim_municipios.sql
CREATE TABLE dm_emprego.dim_municipios (
    codigo int8 NULL,
    estado VARCHAR(2) NULL,
    cidade VARCHAR(200) NULL
);
script_dim_raca_cor.sql
CREATE TABLE dm_emprego.dim_raca_cor (
    cod_raca_cor int8 NULL,
    raca_cor VARCHAR(9) NULL
);
script_dim_tipo_defic.sql
CREATE TABLE dm_emprego.dim_tipo_defic (
    cod_tipo_defic int8 NULL,
    tipo_defic VARCHAR(20) NULL
);
script_dim_tipo_estab.sql
CREATE TABLE dm_emprego.dim_tipo_estab (
    cod_tipo_estab int8 NULL,
    tipo_estab VARCHAR(11) NULL
);
script_dim_tipo_mov_desgregado.sql
CREATE TABLE dm_emprego.dim_tipo_mov_desgregado (
    cod_tipo_mov_desgregado int8 NULL,
    tipo_mov_desgregado VARCHAR(46) NULL
);
procedure.concat.sinonimos.sql
CREATE OR REPLACE FUNCTION f_concat_sinonimos() RETURNS setof cbo_ocupacao_concat AS $$
    DECLARE
        cont INT := 8388;--(select count(*) from st1.cbo_sinonimos);
        i INT := 1;
        sinonimos VARCHAR := (SELECT t.titulo_ocupacao FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = 1);
        cod_ocup INT := 0;
        cod_sino INT := 0;
 
    BEGIN
        while (i <=  cont) loop
            cod_ocup := (SELECT t.cod_ocupacao FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i );
            cod_sino := (SELECT t.cod_sinonimo FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i);
 
            IF (cod_ocup = cod_sino) THEN
 
                IF((SELECT t.cod_sinonimo FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i-1) IS NULL )THEN
                    sinonimos := (SELECT t.titulo_ocupacao FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i);
                END IF;
 
                IF ((SELECT t.cod_ocupacao FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i )
                    <> (SELECT t.cod_sinonimo FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i-1)) THEN
 
                    INSERT INTO st1.cbo_ocupacao_concat (cod_ocupacao, titulo_ocupacao)
                    VALUES ((SELECT t.cod_ocupacao FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i-1 ), sinonimos);
                    sinonimos := (SELECT t.titulo_ocupacao FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i);
 
                END IF;-- fim do 1° IF
                sinonimos := concat(sinonimos, ' | ' , (SELECT t.titulo_sinimo FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i ));
 
            ELSE
               IF( ((SELECT t.cod_sinonimo FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i-1)
               = (SELECT t.cod_sinonimo FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i-1))
               AND (SELECT t.cod_sinonimo FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i) IS NULL ) THEN
 
                       INSERT INTO st1.cbo_ocupacao_concat (cod_ocupacao, titulo_ocupacao)
                    VALUES ((SELECT t.cod_ocupacao FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i-1 ), sinonimos);
 
               END IF;
 
                INSERT INTO st1.cbo_ocupacao_concat (cod_ocupacao, titulo_ocupacao)
                VALUES ((SELECT t.cod_ocupacao FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i ),
                (SELECT t.titulo_ocupacao FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i ));
            END IF;
 
            IF ((SELECT t.cod_ocupacao FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = 8388 ) = 992225) THEN
                INSERT INTO st1.cbo_ocupacao_concat (cod_ocupacao, titulo_ocupacao)
                VALUES ((SELECT t.cod_ocupacao FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = 8388 ),
                (SELECT t.titulo_ocupacao FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = 8388 ));
            END IF;
            i := i   1;
 
        END loop;
    END;
    $$ LANGUAGE plpgsql;
 
DELETE FROM st1.cbo_ocupacao_concat;
 
SELECT f_concat_sinonimos();
dim_tempo.sql
 

Validar informações

Construir o metadado

Elaborar Dicionário de Dados

Script de criação das tabelas do Data Mart

script_dim_cbo_2002_ocupacao.sql
CREATE TABLE dm_emprego.dim_cbo_2002_ocupacao (
    codigo int8 NULL,
    descricao VARCHAR(200) NULL
);
script_dim_cbo_94_ocupacao.sql
CREATE TABLE dm_emprego.dim_cbo_94_ocupacao (
    codigo int8 NULL,
    descricao VARCHAR(200) NULL
);
script_dim_classe_10.sql
CREATE TABLE dm_emprego.dim_classe_10 (
    descricao VARCHAR(200) NULL,
    codigo VARCHAR(15) NULL
);
script_dim_cnae_20_subclas.sql
CREATE TABLE dm_emprego.dim_cnae_20_subclas (
    descricao VARCHAR(200) NULL,
    codigo VARCHAR(15) NULL
);
script_dim_cnae_2_classe.sql
CREATE TABLE dm_emprego.dim_cnae_2_classe (
    codigo VARCHAR(15) NULL,
    descricao VARCHAR(200) NULL
);
script_dim_empregados.sql
CREATE TABLE dm_emprego.dim_empregados (
    cod_sexo int8 NULL,
    cod_ano int8 NULL,
    sexo VARCHAR(9) NULL,
    cod_grau_instrucao int8 NULL,
    grau_instrucao VARCHAR(23) NULL
);
script_dim_ibge_subsetor.sql
CREATE TABLE dm_emprego.dim_ibge_subsetor (
    categorias VARCHAR(67) NULL,
    valor_na_fonte int4 NULL
);
script_dim_mesorregiao.sql
CREATE TABLE dm_emprego.dim_mesorregiao (
    codigo int8 NULL,
    descricao VARCHAR(200) NULL
);
script_dim_microrregiao.sql
CREATE TABLE dm_emprego.dim_microrregiao (
    codigo int8 NULL,
    descricao VARCHAR(200) NULL
);
script_dim_municipios.sql
CREATE TABLE dm_emprego.dim_municipios (
    codigo int8 NULL,
    estado VARCHAR(2) NULL,
    cidade VARCHAR(200) NULL
);
script_dim_raca_cor.sql
CREATE TABLE dm_emprego.dim_raca_cor (
    cod_raca_cor int8 NULL,
    raca_cor VARCHAR(9) NULL
);
script_dim_tipo_defic.sql
CREATE TABLE dm_emprego.dim_tipo_defic (
    cod_tipo_defic int8 NULL,
    tipo_defic VARCHAR(20) NULL
);
script_dim_tipo_estab.sql
CREATE TABLE dm_emprego.dim_tipo_estab (
    cod_tipo_estab int8 NULL,
    tipo_estab VARCHAR(11) NULL
);
script_dim_tipo_mov_desgregado.sql
CREATE TABLE dm_emprego.dim_tipo_mov_desgregado (
    cod_tipo_mov_desgregado int8 NULL,
    tipo_mov_desgregado VARCHAR(46) NULL
);
procedure.concat.sinonimos.sql
CREATE OR REPLACE FUNCTION f_concat_sinonimos() RETURNS setof cbo_ocupacao_concat AS $$
    DECLARE
        cont INT := 8388;--(select count(*) from st1.cbo_sinonimos);
        i INT := 1;
        sinonimos VARCHAR := (SELECT t.titulo_ocupacao FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = 1);
        cod_ocup INT := 0;
        cod_sino INT := 0;
 
    BEGIN
        while (i <=  cont) loop
            cod_ocup := (SELECT t.cod_ocupacao FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i );
            cod_sino := (SELECT t.cod_sinonimo FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i);
 
            IF (cod_ocup = cod_sino) THEN
 
                IF((SELECT t.cod_sinonimo FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i-1) IS NULL )THEN
                    sinonimos := (SELECT t.titulo_ocupacao FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i);
                END IF;
 
                IF ((SELECT t.cod_ocupacao FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i )
                    <> (SELECT t.cod_sinonimo FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i-1)) THEN
 
                    INSERT INTO st1.cbo_ocupacao_concat (cod_ocupacao, titulo_ocupacao)
                    VALUES ((SELECT t.cod_ocupacao FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i-1 ), sinonimos);
                    sinonimos := (SELECT t.titulo_ocupacao FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i);
 
                END IF;-- fim do 1° IF
                sinonimos := concat(sinonimos, ' | ' , (SELECT t.titulo_sinimo FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i ));
 
            ELSE
               IF( ((SELECT t.cod_sinonimo FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i-1)
               = (SELECT t.cod_sinonimo FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i-1))
               AND (SELECT t.cod_sinonimo FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i) IS NULL ) THEN
 
                       INSERT INTO st1.cbo_ocupacao_concat (cod_ocupacao, titulo_ocupacao)
                    VALUES ((SELECT t.cod_ocupacao FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i-1 ), sinonimos);
 
               END IF;
 
                INSERT INTO st1.cbo_ocupacao_concat (cod_ocupacao, titulo_ocupacao)
                VALUES ((SELECT t.cod_ocupacao FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i ),
                (SELECT t.titulo_ocupacao FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = i ));
            END IF;
 
            IF ((SELECT t.cod_ocupacao FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = 8388 ) = 992225) THEN
                INSERT INTO st1.cbo_ocupacao_concat (cod_ocupacao, titulo_ocupacao)
                VALUES ((SELECT t.cod_ocupacao FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = 8388 ),
                (SELECT t.titulo_ocupacao FROM st1.cbo_ocupac_c_sino t WHERE t.sk_ocup_sinon = 8388 ));
            END IF;
            i := i + 1;
 
        END loop;
    END;
    $$ LANGUAGE plpgsql;
 
DELETE FROM st1.cbo_ocupacao_concat;
 
SELECT f_concat_sinonimos();
dim_tempo.sql
 

Validar informações


start/projetos/projetos_dev/sedi_data_mart_emprego/documentacao.1571231260.txt.gz · Última modificação: 2022/01/25 15:26 (edição externa)