Pular para o conteúdo principal

Questão de Banco de Dados — Geral — FCC 2026

Banco de DadosGeral
Código
fc142176
Banca
FCC
Órgão
SCGE PE
Ano
2026
Cargo
Ges Gov ( )

As tabelas a seguir devem ser utilizadas para responder à questão abaixo:

 

Em um banco de dados PostgreSQL da SCGE, instalado e funcionando em condições ideais, há cinco tabelas assim definidas:

 

– tabela dim_orgao (campos: id_orgao, cod_orgao, nome_orgao), que armazena informações das unidades administrativas do órgão público;

– tabela dim_tempo (campos: id_tempo, data_inicio, data_fim, mes, ano), responsável por representar o calendário analítico usado nas consultas e agregações;

– tabela dim_elemento (campos: id_elemento, cod_elemento, descricao), que contém a classificação contábil e natureza dos gastos;

– tabela staging_despesas (campos: cod_orgao, cod_elemento, data_empenho, valor), utilizada como área temporária de carregamento de dados brutos provenientes dos sistemas transacionais;

– tabela fato_despesas (campos: id_orgao, id_tempo, id_elemento, valor_total), que consolida as medidas financeiras agregadas.

 

Estas tabelas já foram populadas com dados e estão sendo usadas no desenvolvimento de um Data Warehouse, visando consolidar informações de execução orçamentária e custos operacionais.

 

Para preparar a base de dados analítica, foi criado o script SQL abaixo.

 

INSERT INTO fato_despesas (id_orgao, id_tempo, id_elemento, valor_total)

SELECT  

  d.id_orgao,  

  t.id_tempo,    

e.id_elemento,    

SUM(c.valor) AS valor_total

 

FROM staging_despesas c

JOIN dim_orgao d ON c.cod_orgao = d.cod_orgao

JOIN dim_tempo t ON c.data_empenho BETWEEN t.data_inicio AND t.data_fim

JOIN dim_elemento e ON c.cod_elemento = e.cod_elemento

GROUP BY d.id_orgao, t.id_tempo, e.id_elemento;

 

O script acima

  1. Afaz parte da fase de transformação e carga do ETL, consolidando dados limpos e agregados no modelo estrela do Data Warehouse, em que a tabela fato é populada com medidas sumarizadas.
  2. Bexemplifica uma consulta OLAP de exploração analítica em tempo real, executada diretamente sobre o banco transacional para geração de dashboards dinâmicos.
  3. Crealiza a carga detalhada (linha a linha) de lançamentos transacionais na tabela fato, preservando cada registro individual do staging sem agregações, para permitir análises em nível de transação.
  4. Dexemplifica a etapa de extração do ETL, pois lê dados diretamente das tabelas de origem transacional e os transfere sem transformação para o ambiente de destino.
  5. Erepresenta o processo de normalização de dimensões, típico da fase de modelagem relacional, visando eliminar redundância entre tabelas dimensionais.
Revelar gabarito e comentário

GabaritoA — faz parte da fase de transformação e carga do ETL, consolidando dados limpos e agregados no modelo estrela do Data Warehouse, em que a tabela fato é populada com medidas sumarizadas.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

ETL: Transformação e Carga no Data Warehouse

Gabarito: letra A. O script INSERT INTO fato_despesas ... SELECT ... SUM(c.valor) ... GROUP BY executa a fase de transformação e carga do ETL: lê dados da tabela staging_despesas, aplica JOINs com as dimensões, agrega os valores com SUM e GROUP BY, e insere o resultado consolidado na tabela fato do modelo estrela. As demais alternativas confundem as etapas do ETL (extração, transformação, carga) ou o propósito do Data Warehouse (OLAP) com o banco transacional (OLTP).

O processo ETL (Extract, Transform, Load) é o coração da construção de um Data Warehouse. Ele tem três fases bem definidas: extração (leitura dos dados das fontes, que podem ser sistemas transacionais, arquivos, APIs etc.), transformação (limpeza, padronização, conversão de formatos, agregação, aplicação de regras de negócio) e carga (gravação dos dados já transformados no destino analítico). O script da questão faz exatamente isso: extrai da staging_despesas (área temporária de carregamento), transforma ao juntar com as dimensões (dim_orgao, dim_tempo, dim_elemento) e agregar os valores com SUM, e carrega o resultado na fato_despesas.

O modelo estrela (star schema) é a modelagem típica de Data Warehouse: uma tabela fato central, com as medidas (fatos numéricos, como valor_total), cercada por tabelas de dimensão (que descrevem os fatos, como dim_orgao, dim_tempo, dim_elemento). A tabela fato é populada com dados agregados e sumarizados, prontos para consultas analíticas (OLAP). O script faz exatamente isso: SUM(c.valor) AS valor_total com GROUP BY d.id_orgao, t.id_tempo, e.id_elemento — ou seja, consolida as despesas por órgão, tempo e elemento, gerando uma medida agregada.

A distinção crucial aqui é entre o ambiente OLTP (Online Transaction Processing) e o OLAP (Online Analytical Processing). O OLTP é o banco transacional, otimizado para muitas escritas curtas e leituras pontuais (ex.: registrar um empenho). O OLAP é o ambiente analítico, otimizado para leituras pesadas e agregações (ex.: total de despesas por órgão no ano). O Data Warehouse é o repositório OLAP, e o ETL é o processo que move os dados do OLTP para o OLAP. O script da questão não é uma consulta OLAP executada em tempo real sobre o banco transacional — é um processo de carga que popula o Data Warehouse.

A pegadinha que a banca explora é a confusão entre as etapas do ETL. A alternativa D diz que o script é a extração, mas a extração é apenas a leitura dos dados brutos — aqui há JOINs, SUM e GROUP BY, que são transformações. A alternativa C diz que é uma carga detalhada linha a linha, mas o GROUP BY prova que há agregação. A alternativa B diz que é uma consulta OLAP em tempo real, mas é um INSERT (carga), não um SELECT de exploração. A alternativa E fala em normalização, que é o oposto do modelo dimensional. Guarde a fronteira entre extrair, transformar e carregar: é exatamente nela que as alternativas se dividem.

Alternativa A — ✅ Correta ⟵ GABARITO

O script é a materialização da fase de transformação e carga do ETL. Ele lê da staging_despesas (dados brutos), aplica JOINs com as dimensões para substituir códigos por IDs, agrega com SUM(c.valor) e GROUP BY, e insere o resultado na fato_despesas. A tabela fato é populada com medidas sumarizadas (valor_total), exatamente o que o modelo estrela do Data Warehouse exige. A alternativa espelha com precisão o que o script faz: consolida dados limpos e agregados no modelo estrela.

Alternativa B — ❌ Incorreta

Confunde o processo de carga do ETL com uma consulta OLAP de exploração. O script é um INSERT INTO ... SELECT, ou seja, uma operação de escrita que popula a tabela fato — não é uma consulta de leitura para gerar dashboards. Além disso, ele não executa sobre o banco transacional em tempo real; ele lê da staging_despesas (área temporária) e escreve no Data Warehouse. A exploração OLAP viria depois, com SELECTs sobre a fato_despesas já populada.

Alternativa C — ❌ Incorreta

Afirma que a carga é detalhada, linha a linha, sem agregações. O script faz exatamente o oposto: SUM(c.valor) AS valor_total com GROUP BY d.id_orgao, t.id_tempo, e.id_elemento agrega os lançamentos do staging, consolidando vários registros em um único por combinação de dimensões. A tabela fato não preserva cada registro individual — ela guarda o total por órgão, tempo e elemento. A carga detalhada linha a linha seria um simples INSERT INTO fato_despesas SELECT ... FROM staging_despesas sem GROUP BY.

Alternativa D — ❌ Incorreta

Diz que o script é a etapa de extração do ETL, lendo dados sem transformação. A extração é apenas a leitura dos dados brutos das fontes — aqui, a leitura da staging_despesas é só o ponto de partida. O script transforma os dados ao aplicar JOINs (resolvendo códigos em IDs) e SUM/GROUP BY (agregando valores). Não é uma transferência sem transformação; é uma transformação com agregação seguida de carga.

Alternativa E — ❌ Incorreta

Confunde o modelo dimensional do Data Warehouse com a normalização do modelo relacional. A normalização visa eliminar redundância e dependências funcionais, dividindo tabelas — é típica do modelo relacional transacional (OLTP). O script, ao contrário, popula uma tabela fato desnormalizada do modelo estrela, com medidas agregadas. Não há processo de normalização de dimensões aqui; há consolidação de fatos.

NÃO CAIA NESSA!

A banca adora inverter as etapas do ETL para confundir. A alternativa D tenta fazer você acreditar que o script é só extração, mas o JOIN + SUM + GROUP BY é a prova de que há transformação. A alternativa C tenta fazer você acreditar que é carga linha a linha, mas o GROUP BY prova a agregação. A chave é olhar para o SUM e o GROUP BY: se estão presentes, há transformação e agregação — não é extração pura nem carga detalhada. 💪

PEGA ESSA DICA!

Para identificar a fase do ETL em uma questão, pergunte: o script apenas lê dados (extração)? Ele modifica/agrega/limpa dados (transformação)? Ele grava em um destino (carga)? Se houver JOIN, WHERE, GROUP BY, SUM, CASE, etc., há transformação. Se houver INSERT INTO ... SELECT, há carga. O script da questão tem os dois: transforma (JOIN + GROUP BY) e carrega (INSERT INTO fato).

Gabarito: letra A

Link permanente: /questoes/fc142176