
  
    
    

    create  table
      "gold_warehouse"."main"."fato_resumo_financeiro__dbt_tmp"
  
    as (
      

WITH dados_brutos AS (
    -- Conglomerados Prudenciais
    SELECT
        codigo,
        instituicao as nome_instituicao_historico,
        data_base,
        'Conglomerado Prudencial' as tipo_instituicao,
        ativo_total,
        carteira_de_credito_classificada as carteira_credito,
        passivo_circulante_e_exigivel_a_longo_prazo as passivo_exigivel,
        captacoes,
        patrimonio_liquido,
        lucro_liquido,
        numero_de_agencias as quantidade_agencias,
        numero_de_postos_de_atendimento as quantidade_postos_atendimento,
        (lucro_liquido / NULLIF(patrimonio_liquido, 0)) as roe,
        (lucro_liquido / NULLIF(ativo_total, 0)) as roa
    FROM "silver"."main"."prudential_conglomerates_summary"

    UNION ALL

    -- Conglomerados Financeiros
    SELECT
        codigo,
        instituicao as nome_instituicao_historico,
        data_base,
        'Conglomerado Financeiro' as tipo_instituicao,
        ativo_total,
        carteira_de_credito_classificada as carteira_credito,
        passivo_circulante_e_exigivel_a_longo_prazo as passivo_exigivel,
        captacoes,
        patrimonio_liquido,
        lucro_liquido,
        numero_de_agencias as quantidade_agencias,
        numero_de_postos_de_atendimento as quantidade_postos_atendimento,
        (lucro_liquido / NULLIF(patrimonio_liquido, 0)) as roe,
        (lucro_liquido / NULLIF(ativo_total, 0)) as roa
    FROM "silver"."main"."financial_conglomerates_summary"

    UNION ALL

    -- Instituições Independentes
    SELECT
        codigo,
        instituicao as nome_instituicao_historico,
        data_base,
        'Instituicao Individual' as tipo_instituicao,
        ativo_total,
        carteira_de_credito_classificada as carteira_credito,
        passivo_circulante_e_exigivel_a_longo_prazo as passivo_exigivel,
        captacoes,
        patrimonio_liquido,
        lucro_liquido,
        numero_de_agencias as quantidade_agencias,
        numero_de_postos_de_atendimento as quantidade_postos_atendimento,
        (lucro_liquido / NULLIF(patrimonio_liquido, 0)) as roe,
        (lucro_liquido / NULLIF(ativo_total, 0)) as roa
    FROM "silver"."main"."individual_institutions_summary"
)

SELECT
    
    
        md5(cast(cast(d.codigo as bigint) as varchar) || d.tipo_instituicao)
    
 as id_instituicao, -- FK para dim_instituicao
    
    strftime(try_cast(d.data_base as date), '%Y%m%d')::int
 as id_data,  -- FK para dim_tempo

    -- Métricas
    d.nome_instituicao_historico,
    d.ativo_total,
    d.carteira_credito,
    d.passivo_exigivel,
    d.captacoes,
    d.patrimonio_liquido,
    d.lucro_liquido,
    d.quantidade_agencias,
    d.quantidade_postos_atendimento,
    d.roe,
    d.roa

FROM dados_brutos d
    );
  
  