O que mais cai
| Parte do tópico | Importância | O que a banca cobra |
|---|---|---|
| Definições e funções de Data Warehouse e Data Mart | Alta | As quatro características de Inmon, Inmon contra Kimball, data mart dependente e independente |
| Modelagem dimensional | Alta | Fato e dimensão, granularidade, estrela contra floco de neve, aditividade, SCD |
| ETL (Extração, Transformação e Carga) | Alta | O que acontece em cada fase, staging area, carga incremental, ETL contra ELT |
| OLAP e suas diferenças com OLTP | Alta | Operações drill-down, roll-up, slice, dice e pivot, OLTP contra OLAP, MOLAP e ROLAP |
Do que trata o tópico
Este tópico trata do armazém de dados que uma organização monta para analisar a própria história e tomar decisões. Ele cobre o Data Warehouse e o Data Mart, a modelagem dimensional que organiza os dados em fatos e dimensões, o processo ETL que leva os dados dos sistemas de origem até o armazém e o OLAP, que é a forma de consultar esses dados por vários ângulos. O tópico fecha com a comparação entre OLAP e OLTP, que é o sistema do dia a dia que registra cada operação.
Conteúdo
Definições e funções de Data Warehouse e Data Mart
Um órgão público tem vários sistemas: um de protocolo, um de recursos humanos, um de folha de pagamento e um de compras. Cada sistema guarda os dados do seu jeito, com códigos próprios e só com a situação de hoje. Quando a direção pergunta quanto o órgão gastou com cada setor nos últimos cinco anos, nenhum desses sistemas responde sozinho, e uma consulta pesada num deles deixa o atendimento lento. O Data Warehouse (DW, armazém de dados) resolve esse problema: ele é um banco de dados separado, feito para análise, que junta os dados de todos os sistemas num formato único e guarda o histórico.
A definição mais cobrada é a de Bill Inmon. Para ele, o Data Warehouse é um conjunto de dados orientado por assunto, integrado, variante no tempo e não volátil, que apoia o processo de decisão da gerência. Cada uma dessas quatro características tem um sentido preciso, e a banca troca uma delas pela característica oposta.
- Orientado por assunto: os dados se organizam pelos grandes temas do negócio (cliente, produto, venda, servidor), e não pelas aplicações que os geraram (sistema de protocolo, sistema de folha).
- Integrado: os dados de origens diferentes passam a seguir um padrão só de nomes, códigos, formatos e unidades. Se um sistema grava o sexo como "M" e "F" e outro grava como "1" e "2", o DW guarda uma forma só.
- Variante no tempo: todo dado do DW está ligado a um momento ou período, e o DW guarda um horizonte longo, de vários anos. O sistema de origem mostra o salário de hoje; o DW mostra o salário de cada mês.
- Não volátil: depois que entra, o dado não é alterado nem apagado pelo usuário. O DW recebe cargas periódicas e consultas, e não as operações de inserção, alteração e exclusão de cada transação.
A não volatilidade é a característica mais trocada em prova. Ela não quer dizer que o DW nunca muda: o DW cresce a cada carga, e a equipe técnica pode corrigir um erro de carga. Ela quer dizer que o usuário de negócio não atualiza registro por registro, como faz no sistema de cadastro.
A granularidade é o nível de detalhe do dado guardado. Uma granularidade fina guarda cada venda, item por item; uma granularidade grossa guarda só o total vendido por mês. Quanto mais fina a granularidade, mais perguntas o DW responde e mais espaço ele ocupa.
Na terminologia de Inmon, quanto maior o nível de granularidade, menor o detalhe: o total mensal tem granularidade alta, e a venda item por item tem granularidade baixa. Essa inversão engana quem lê "alta granularidade" como "muito detalhe".
O Data Mart (DM) é um recorte do armazém voltado para uma área ou um departamento, como o financeiro, o de vendas ou o de recursos humanos. Ele é menor, tem menos assuntos, fica pronto mais rápido e custa menos.
Os Data Marts se dividem em dois tipos pela origem dos dados. O Data Mart dependente recebe os dados do Data Warehouse corporativo, que já está integrado. O Data Mart independente recebe os dados direto dos sistemas de origem, sem passar por um DW central. Vários Data Marts independentes, cada um com seus próprios códigos, tendem a dar números diferentes para a mesma pergunta, e o mercado chama esse problema de "ilhas de dados".
Duas linhas de projeto disputam a forma de construir o armazém. Bill Inmon defende a construção de cima para baixo (top-down): primeiro se monta o Data Warehouse corporativo, integrado e normalizado, e depois se tiram dele os Data Marts dependentes. Ralph Kimball defende a construção de baixo para cima (bottom-up): a equipe entrega um Data Mart dimensional por processo de negócio, e os Data Marts se ligam por dimensões conformadas, isto é, dimensões com o mesmo conteúdo e o mesmo significado em todos eles.
Na visão de Kimball, o Data Warehouse é a união dos Data Marts ligados por essas dimensões comuns. A matriz que mostra quais processos usam quais dimensões se chama matriz de barramento (bus matrix), e a arquitetura se chama arquitetura de barramento. Na visão de Inmon, o DW central fica em modelo normalizado (próximo da terceira forma normal), e só os Data Marts usam o modelo dimensional.
Ao redor do DW aparecem outras peças que a banca cita. A staging area (área de preparação) é o espaço onde o ETL deixa os dados enquanto os trata, sem acesso do usuário final. O ODS (Operational Data Store, armazenamento de dados operacionais) guarda dados integrados e atuais, com atualização frequente, para consultas operacionais rápidas; ele é volátil e tem pouco histórico, ao contrário do DW. Os metadados são os dados sobre os dados: a origem de cada campo, a regra de transformação aplicada, a data da última carga e o significado de cada medida.
Exemplo resolvido: uma secretaria de saúde quer saber se cada característica de Inmon está presente num banco que ela já tem.
- Entrada: o banco junta os atendimentos de três sistemas, com o código do município no mesmo padrão. Saída: o banco é integrado.
- Entrada: o banco organiza as tabelas por paciente, atendimento e unidade de saúde. Saída: o banco é orientado por assunto.
- Entrada: cada atendimento tem a data e o banco guarda dez anos. Saída: o banco é variante no tempo.
- Entrada: a recepção altera o endereço do paciente no próprio banco a cada consulta. Saída: o banco não é não volátil, porque o usuário atualiza registro por registro.
- Resultado: o banco tem três das quatro características. Como falta a não volatilidade, ele não é um Data Warehouse no sentido de Inmon. Ele também não é um ODS típico, porque o ODS é volátil e guarda só dados atuais, e este banco guarda dez anos de histórico.
Na prática, uma prefeitura que precisa só de um painel de arrecadação para a Secretaria de Fazenda pode começar por um Data Mart de arrecadação. Se a prefeitura seguir Kimball, ela projeta a dimensão de contribuinte e a dimensão de tempo já como dimensões conformadas, para que o próximo Data Mart (o de fiscalização, por exemplo) use as mesmas dimensões. Se ela seguir Inmon, ela monta primeiro o DW corporativo e tira dele o Data Mart de arrecadação.
O Data Mart é confundido com uma simples visão (view) do banco. A visão é só uma consulta guardada, sem dados próprios, e o Data Mart é um banco com dados próprios, carregados e organizados para a área.
O erro comum de quem está começando é achar que o Data Mart independente e o dependente diferem pelo tamanho. Os dois podem ter o mesmo tamanho: o que os separa é de onde vêm os dados, do DW corporativo ou direto dos sistemas de origem.
Julgue o item. O Data Warehouse é não volátil porque, depois de carregado, ele não recebe novos dados, e o seu conteúdo fica congelado na forma da primeira carga.
Comentário:
Regra: não volátil quer dizer que o usuário não altera nem apaga registro por registro; o DW continua a receber cargas periódicas e cresce com o tempo.
A afirmação erra em depois de carregado, ele não recebe novos dados, e o seu conteúdo fica congelado na forma da primeira carga: o DW recebe novas cargas e acumula o histórico. O que ele não recebe são as operações de alteração e exclusão do dia a dia.
Resultado: errado.
Um órgão monta primeiro um Data Warehouse corporativo, integrado e em modelo normalizado, e depois extrai dele Data Marts para as áreas de orçamento e de pessoal. Essa forma de construção corresponde
- A) à abordagem de Kimball, porque os Data Marts das áreas usam dimensões conformadas.
- B) à abordagem de Kimball, porque o projeto parte do Data Warehouse corporativo.
- C) à abordagem de Inmon, de cima para baixo, com Data Marts dependentes.
- D) à abordagem de Inmon, de baixo para cima, com Data Marts independentes.
- E) a uma arquitetura de Data Marts independentes, porque cada área tem o seu Data Mart.
Comentário:
A) Errada.
Teoria: Kimball constrói de baixo para cima, entregando Data Marts por processo de negócio ligados por dimensões conformadas.
A alternativa erra em à abordagem de Kimball: o caso descreve o DW central construído antes dos Data Marts, que é a marca de Inmon.
B) Errada.
Teoria: na abordagem de Kimball, o Data Warehouse é a união dos Data Marts; o projeto parte do Data Mart, não do DW corporativo.
A alternativa erra em porque o projeto parte do Data Warehouse corporativo: partir do DW corporativo é a abordagem de Inmon.
C) Certa.
Teoria: Inmon constrói de cima para baixo, com o DW corporativo normalizado primeiro e os Data Marts dependentes tirados dele.
O enunciado descreve exatamente essa ordem: primeiro o DW integrado e normalizado, depois os Data Marts que recebem dados dele.
D) Errada.
Teoria: a abordagem de Inmon é de cima para baixo, e os Data Marts tirados do DW são dependentes.
A alternativa erra em de baixo para cima, com Data Marts independentes: a construção é de cima para baixo e os Data Marts são dependentes, porque recebem os dados do DW.
E) Errada.
Regra: o Data Mart independente recebe os dados direto dos sistemas de origem, sem um DW central.
A alternativa erra em a uma arquitetura de Data Marts independentes: os Data Marts do caso recebem dados do DW corporativo e por isso são dependentes.
Resultado: alternativa C.
Julgue o item. Um Data Mart que recebe os dados já integrados do Data Warehouse corporativo é chamado de dependente, e ele tende a dar os mesmos números que o DW para as perguntas da sua área.
Comentário:
Regra: o Data Mart dependente recebe os dados do Data Warehouse corporativo, que já está integrado, e por isso segue os mesmos códigos e as mesmas regras do DW.
A afirmação está certa. Como o Data Mart dependente bebe da mesma fonte integrada, ele não cria uma versão própria dos números, ao contrário do Data Mart independente.
Resultado: certo.
Julgue o item. Na terminologia de Inmon, um Data Warehouse que guarda cada venda, item por item, tem alto nível de granularidade, e um que guarda só o total vendido por mês tem baixo nível de granularidade.
Comentário:
Regra: na terminologia de Inmon, quanto maior o nível de granularidade, menor o detalhe; o total mensal tem granularidade alta, e a venda item por item tem granularidade baixa.
A afirmação erra em um Data Warehouse que guarda cada venda, item por item, tem alto nível de granularidade: o dado item por item tem granularidade baixa, e o total mensal tem granularidade alta.
Resultado: errado.
Como a banca cobra: a banca troca uma das quatro características de Inmon pela oposta (volátil, orientado por aplicação) e mistura as abordagens de Inmon e de Kimball.
Modelagem dimensional
O modelo relacional normalizado, usado nos sistemas de cadastro, divide os dados em muitas tabelas para evitar repetição. Uma pergunta simples de análise, como "quanto vendemos por categoria e por cidade em março", obriga essa estrutura a juntar dez ou quinze tabelas. A modelagem dimensional, sistematizada por Ralph Kimball, reorganiza os dados para a análise: ela põe os números que se medem numa tabela central e as descrições que dão contexto em tabelas ao redor.
A tabela fato guarda as medidas de um processo de negócio, como valor da venda, quantidade vendida, horas trabalhadas ou valor pago. Cada linha da tabela fato é um evento ou uma medição, e ela tem as chaves estrangeiras que apontam para as dimensões. A tabela fato é a maior do modelo em número de linhas e é estreita, com poucas colunas.
A tabela dimensão guarda o contexto do fato: quem, o quê, onde, quando e como. São dimensões típicas a de tempo (dia, mês, trimestre, ano), a de produto (nome, marca, categoria), a de cliente e a de loja. A dimensão tem poucas linhas em relação à tabela fato e é larga, com muitos atributos descritivos, que são os campos que o usuário usa para filtrar e agrupar.
O projeto dimensional de Kimball segue quatro passos, nesta ordem:
- Escolher o processo de negócio
- Declarar a granularidade
- Identificar as dimensões
- Identificar os fatos
- Escolher o processo de negócio. Entra o que a área quer medir; sai o processo, por exemplo "vendas no caixa".
- Declarar a granularidade. Entra o processo; sai o que uma linha da tabela fato representa, por exemplo "um item de um cupom fiscal".
- Identificar as dimensões. Entra a granularidade; saem as descrições que valem para cada linha (data, produto, loja, forma de pagamento).
- Identificar os fatos. Entra a granularidade; saem as medidas de cada linha (quantidade, valor, desconto).
A granularidade vem antes das dimensões e dos fatos porque é ela que diz o que pode entrar no modelo. Se a linha é "o total do dia por loja", o produto não cabe como dimensão, porque um total diário mistura vários produtos.
As medidas da tabela fato se classificam pela possibilidade de soma. A medida aditiva pode ser somada por todas as dimensões, como o valor da venda e a quantidade vendida. A medida semiaditiva pode ser somada por algumas dimensões e não pela dimensão de tempo, como o saldo de uma conta ou o estoque: somar os estoques de várias lojas no mesmo dia faz sentido, mas somar o estoque de segunda com o de terça não faz. A medida não aditiva não pode ser somada por dimensão nenhuma, como percentuais, razões e preço unitário; o certo é guardar o numerador e o denominador e calcular a razão no fim.
As tabelas fato também se classificam pelo tipo de registro:
- Fato transacional: uma linha por evento, como cada venda.
- Fato de snapshot periódico: uma foto em intervalos regulares, como o saldo de cada conta no fim do mês.
- Fato de snapshot acumulado: uma linha por processo, com várias datas que se preenchem ao longo do caminho (pedido, faturamento, envio, entrega).
- Fato sem fatos (factless): sem medida numérica, só registra que um evento ocorreu, como a presença de um aluno numa aula.
Algumas dimensões têm nome próprio:
- Dimensão conformada: o mesmo conteúdo e o mesmo sentido em vários Data Marts, o que permite comparar os processos.
- Dimensão degenerada: um atributo que fica na própria tabela fato, sem tabela de dimensão, como o número do cupom fiscal.
- Dimensão de papel (role-playing): a mesma dimensão com papéis diferentes, como a de tempo usada como data do pedido e data da entrega.
- Dimensão lixo (junk): uma tabela que junta indicadores soltos, como "pago com cartão" e "entrega expressa".
As dimensões usam uma chave substituta (surrogate key): um número sequencial criado pelo DW, sem significado de negócio, no lugar da chave natural do sistema de origem (CPF, matrícula, código do produto). A chave substituta isola o DW das mudanças de código da origem e permite guardar várias versões do mesmo cliente, que é a base da dimensão que muda lentamente.
A dimensão que muda lentamente (SCD, Slowly Changing Dimension) é a dimensão cujos atributos mudam de vez em quando, como a cidade do cliente ou a lotação do servidor. A forma de tratar a mudança tem tipos numerados.
- Tipo 0: o atributo nunca muda no DW, mesmo que mude na origem, como a data de nascimento.
- Tipo 1: o novo valor sobrescreve o antigo, e o histórico se perde.
- Tipo 2: a mudança cria uma nova linha, com nova chave substituta, e a linha antiga fica guardada com a data de fim de vigência. O histórico é completo.
- Tipo 3: a linha ganha uma coluna para o valor anterior, e o histórico fica limitado a uma mudança.
Exemplo resolvido: a cliente Ana, de CPF fictício 111, morava em Recife e se mudou para Olinda em 01/06/2026. A dimensão usa SCD tipo 2.
- Antes da mudança, a dimensão tem uma linha: chave 501, CPF 111, cidade Recife, início 01/01/2025, fim aberto, atual sim.
- O ETL detecta a nova cidade na origem e fecha a linha 501, com fim em 31/05/2026 e atual não.
- O ETL cria a linha 502, com o mesmo CPF 111, cidade Olinda, início 01/06/2026, fim aberto e atual sim.
- Resultado: as vendas de maio continuam ligadas à chave 501 e aparecem em Recife; as vendas de junho usam a chave 502 e aparecem em Olinda.
| Chave | CPF | Cidade | Início | Fim | Atual |
|---|---|---|---|---|---|
| 501 | 111 | Recife | 01/01/2025 | 31/05/2026 | não |
| 502 | 111 | Olinda | 01/06/2026 | aberto | sim |
O desenho em que a tabela fato fica no centro, ligada direto a cada dimensão, se chama esquema estrela (star schema). No esquema estrela, cada dimensão é uma tabela só, desnormalizada, e por isso a categoria do produto se repete em cada linha de produto. A repetição gasta um pouco de espaço, mas a consulta fica simples, com uma junção por dimensão.
O esquema floco de neve (snowflake) normaliza as dimensões: a dimensão de produto aponta para uma tabela de categoria, que aponta para uma tabela de departamento. Ele economiza espaço na dimensão e evita repetição, mas a consulta pede mais junções e o modelo fica mais difícil para o usuário. A diferença entre estrela e floco de neve está só nas dimensões: a tabela fato é a mesma nos dois.
Quando o modelo tem várias tabelas fato que compartilham dimensões conformadas, o desenho se chama constelação de fatos ou esquema galáxia.
Exemplo resolvido: um esquema estrela de vendas tem a fato_vendas e duas dimensões. A dim_produto tem (1, Caderno, Papelaria), (2, Caneta, Papelaria) e (3, Mochila, Acessórios). A dim_loja tem (10, Recife) e (20, Olinda).
| id_produto | id_loja | quantidade | valor |
|---|---|---|---|
| 1 | 10 | 5 | 50,00 |
| 2 | 10 | 20 | 40,00 |
| 3 | 10 | 2 | 300,00 |
| 1 | 20 | 3 | 30,00 |
| 3 | 20 | 1 | 150,00 |
SELECT p.categoria, l.cidade, SUM(f.valor) AS total
FROM fato_vendas f
JOIN dim_produto p ON f.id_produto = p.id_produto
JOIN dim_loja l ON f.id_loja = l.id_loja
GROUP BY p.categoria, l.cidade;
A consulta junta a tabela fato com cada dimensão por uma chave, uma junção por dimensão, como pede o esquema estrela. O GROUP BY agrupa as linhas pela categoria e pela cidade, e o SUM soma o valor de cada grupo.
- Papelaria em Recife: linhas do caderno e da caneta, 50,00 + 40,00 = 90,00.
- Acessórios em Recife: linha da mochila, 300,00.
- Papelaria em Olinda: linha do caderno, 30,00.
- Acessórios em Olinda: linha da mochila, 150,00.
| categoria | cidade | total |
|---|---|---|
| Papelaria | Recife | 90,00 |
| Acessórios | Recife | 300,00 |
| Papelaria | Olinda | 30,00 |
| Acessórios | Olinda | 150,00 |
Na prática, um tribunal que quer medir o tempo dos processos escolhe o processo "tramitação", declara a granularidade "uma linha por processo" e monta uma fato de snapshot acumulado, com as datas de distribuição, de sentença e de baixa. As dimensões são vara, classe processual e tempo, e a dimensão de tempo aparece em três papéis, um para cada data.
A modelagem dimensional é confundida com a normalização. A normalização separa dados para evitar repetição e é a regra dos sistemas transacionais; a modelagem dimensional aceita repetição nas dimensões para ganhar simplicidade e velocidade na consulta. Dentro da modelagem dimensional, o floco de neve é a variante que volta a normalizar as dimensões.
O erro comum é pôr na dimensão uma medida que se soma, como o valor da venda, ou pôr na tabela fato um texto descritivo, como o nome do produto. Medida numérica de evento fica na fato; descrição usada para filtrar e agrupar fica na dimensão.
SELECT l.cidade, SUM(f.quantidade) AS total
FROM fato_vendas f
JOIN dim_produto p ON f.id_produto = p.id_produto
JOIN dim_loja l ON f.id_loja = l.id_loja
WHERE p.categoria = 'Papelaria'
GROUP BY l.cidade;
Considere a consulta acima, aplicada às mesmas tabelas do exemplo resolvido. O resultado da consulta é
- A) Recife com 25 e Olinda com 3.
- B) Recife com 27 e Olinda com 4.
- C) Recife com 90 e Olinda com 30.
- D) Recife com 25, Olinda com 3 e Acessórios com 3.
- E) uma linha só, com 28, porque o filtro deixa uma categoria.
Comentário:
A) Certa.
Conta: o filtro deixa só caderno e caneta; em Recife, 5 + 20 = 25; em Olinda, só o caderno, 3.
A consulta agrupa por cidade e soma a quantidade das linhas de Papelaria, o que dá 25 em Recife e 3 em Olinda.
B) Errada.
Conta: sem o filtro, Recife teria 5 + 20 + 2 = 27 e Olinda 3 + 1 = 4.
A alternativa erra em Recife com 27 e Olinda com 4: esses totais incluem a mochila, que o WHERE tira por ser da categoria Acessórios.
C) Errada.
Conta: 90 e 30 são as somas do valor de Papelaria em Recife e em Olinda, e não da quantidade.
A alternativa erra em Recife com 90 e Olinda com 30: a consulta soma a quantidade, e não o valor.
D) Errada.
Regra: o
WHEREfiltra as linhas antes do agrupamento, e a consulta agrupa só por cidade.
A alternativa erra em e Acessórios com 3: as linhas de Acessórios saem pelo filtro, e a categoria nem é coluna do resultado.
E) Errada.
Regra: o
GROUP BY l.cidadegera uma linha por cidade que sobra depois do filtro.
A alternativa erra em uma linha só, com 28: sobram duas cidades, e por isso o resultado tem duas linhas, 25 e 3.
Resultado: alternativa A.
Julgue o item. No esquema floco de neve, as tabelas de dimensão são normalizadas, o que reduz a repetição de dados nas dimensões, mas aumenta o número de junções nas consultas em relação ao esquema estrela.
Comentário:
Regra: o floco de neve normaliza as dimensões em várias tabelas ligadas entre si; o esquema estrela mantém cada dimensão numa tabela só, desnormalizada.
A afirmação está certa. Normalizar a dimensão de produto em produto, categoria e departamento tira a repetição, mas a consulta por departamento passa a juntar três tabelas em vez de uma.
Resultado: certo.
Julgue o item. Na dimensão que muda lentamente do tipo 1, a mudança de um atributo cria uma nova linha com nova chave substituta, e por isso o DW guarda o histórico completo dos valores do atributo.
Comentário:
Regra: no tipo 1, o novo valor sobrescreve o antigo e o histórico se perde; quem cria nova linha com nova chave substituta é o tipo 2.
A afirmação erra em do tipo 1: a descrição é a do tipo 2. No tipo 1, a linha é a mesma e só o valor muda.
Resultado: errado.
Uma tabela fato de um banco guarda, em cada linha, o saldo de uma conta no fim do dia, o valor dos depósitos do dia e a taxa de juros aplicada à conta. Sobre a aditividade dessas medidas, é correto afirmar que
- A) as três medidas são aditivas, porque todas são numéricas.
- B) o saldo é aditivo, e os depósitos e a taxa são semiaditivos.
- C) o saldo e a taxa são aditivos, e os depósitos são não aditivos.
- D) os depósitos são semiaditivos, porque não podem ser somados no tempo.
- E) os depósitos são aditivos, o saldo é semiaditivo e a taxa é não aditiva.
Comentário:
A) Errada.
Regra: ser numérica não basta; a medida é aditiva só quando a soma faz sentido em todas as dimensões.
A alternativa erra em as três medidas são aditivas, porque todas são numéricas: somar o saldo de dias diferentes ou somar taxas não dá um número com sentido.
B) Errada.
Regra: o saldo pode ser somado entre contas no mesmo dia, mas não entre dias, e por isso é semiaditivo.
A alternativa erra em o saldo é aditivo, e os depósitos e a taxa são semiaditivos: o saldo é semiaditivo, os depósitos são aditivos e a taxa é não aditiva.
C) Errada.
Regra: percentual e taxa não se somam por dimensão nenhuma.
A alternativa erra em o saldo e a taxa são aditivos, e os depósitos são não aditivos: a taxa é não aditiva, o saldo é semiaditivo e os depósitos são aditivos.
D) Errada.
Regra: o valor de depósitos de cada dia pode ser somado por conta, por agência e também por período.
A alternativa erra em os depósitos são semiaditivos, porque não podem ser somados no tempo: os depósitos de segunda e de terça somam o total depositado nos dois dias.
E) Certa.
Regra: medida de fluxo (depósitos) é aditiva; medida de estado (saldo) é semiaditiva; razão ou percentual (taxa) é não aditiva.
A alternativa classifica cada medida pela regra: a soma dos depósitos tem sentido em tudo, a do saldo só fora do tempo e a da taxa em nada.
Resultado: alternativa E.
Como a banca cobra: a banca pede a diferença entre estrela e floco de neve, a ordem dos quatro passos do projeto e o tipo de SCD que guarda histórico. Ela também dá uma medida, como saldo ou percentual, e pergunta se ela é aditiva.
ETL (Extração, Transformação e Carga)
Os dados que o Data Warehouse precisa estão espalhados em sistemas de origem diferentes, com formatos diferentes e com erros de digitação. O ETL (Extract, Transform, Load, em português extração, transformação e carga) é o processo que tira esses dados das origens, trata e padroniza os dados e grava o resultado no DW. É o ETL que entrega a característica "integrado" de Inmon.
O ETL roda em lotes, em geral fora do expediente. Os dados passam pela staging area, a área de preparação, que é um espaço intermediário onde o ETL grava os dados extraídos e faz as transformações. O usuário final não consulta a staging area.
- Extrair dos sistemas de origem
- Gravar na staging area
- Limpar e padronizar
- Integrar e trocar chaves
- Carregar as dimensões
- Carregar a tabela fato
- Extração. Entra o dado dos sistemas de origem (bancos de dados, planilhas, arquivos texto, serviços). Sai uma cópia na staging area. A extração pode ser completa (full), que lê tudo de novo, ou incremental, que lê só o que mudou desde a última carga.
- Transformação. Entra o dado bruto da staging area. Sai o dado limpo, padronizado e integrado, no formato do modelo dimensional.
- Carga. Entra o dado transformado. Sai o dado gravado nas tabelas do DW, primeiro as dimensões e depois a tabela fato.
A extração incremental usa a captura de dados de mudança (CDC, Change Data Capture), que identifica o que foi inserido, alterado ou excluído na origem. O CDC pode ler uma coluna de data de alteração, comparar cópias da tabela ou ler o log de transações do banco de origem.
A transformação concentra as regras de negócio e é a fase mais cobrada. Ela reúne várias atividades:
- Limpeza: corrige ou descarta dados com erro, campo vazio obrigatório ou valor fora da faixa.
- Padronização: põe o mesmo dado num formato só, como datas em um padrão, CPF só com dígitos e nomes em maiúsculas.
- Conversão de códigos: troca códigos diferentes da mesma coisa por um código único, como "M", "1" e "Masculino".
- Eliminação de duplicidade: junta registros que são a mesma pessoa ou o mesmo produto vindo de origens diferentes.
- Derivação: cria campos novos a partir dos existentes, como a faixa etária a partir da data de nascimento.
- Agregação: soma ou resume os dados quando a granularidade do DW é mais grossa que a da origem.
- Troca de chaves: busca a chave substituta da dimensão para cada chave natural (lookup) e grava essa chave na tabela fato.
A carga tem duas formas. A carga inicial enche o DW pela primeira vez, com todo o histórico disponível. A carga incremental acrescenta, a cada execução, só os dados novos ou alterados. As dimensões são carregadas antes da tabela fato porque a linha da fato precisa da chave substituta que já existe na dimensão.
Exemplo resolvido: o ETL de um órgão junta os servidores de dois sistemas de origem. O sistema de RH grava o CPF com pontos e o sexo em letra; o sistema de folha grava o CPF só com dígitos e o sexo em número (1 para masculino, 2 para feminino).
| Origem | CPF | Nome | Sexo |
|---|---|---|---|
| RH | 123.456.789-00 | Ana Lima | F |
| RH | 987.654.321-00 | Bruno Reis | M |
| Folha | 12345678900 | ANA LIMA | 2 |
| Folha | 55566677788 | Carla Dias | 2 |
- Padronização do CPF: tira pontos e traço, e 123.456.789-00 vira 12345678900.
- Padronização do nome: põe tudo em maiúsculas, e Ana Lima vira ANA LIMA.
- Conversão de códigos: "F" e "2" viram FEMININO; "M" e "1" viram MASCULINO.
- Eliminação de duplicidade: a linha 1 e a linha 3 têm agora o mesmo CPF, o mesmo nome e o mesmo sexo, e viram um registro só.
- Troca de chaves: cada CPF recebe uma chave substituta na dimensão de servidor.
- Resultado: 4 linhas de origem viram 3 linhas na dimensão.
| Chave | CPF | Nome | Sexo |
|---|---|---|---|
| 1 | 12345678900 | ANA LIMA | FEMININO |
| 2 | 98765432100 | BRUNO REIS | MASCULINO |
| 3 | 55566677788 | CARLA DIAS | FEMININO |
O ELT (Extract, Load, Transform) muda a ordem: os dados são extraídos, carregados brutos no destino e transformados lá dentro, com a capacidade de processamento do próprio destino. O ELT é comum em data lakes e em bancos em nuvem com muito poder de processamento, onde guardar o dado bruto custa pouco e permite refazer a transformação depois. No ETL, a transformação ocorre antes da carga, num servidor ou na staging area; no ELT, ela ocorre depois da carga, no destino.
Na prática, uma agência reguladora recebe todo dia arquivos das empresas fiscalizadas, cada uma com um layout. O ETL extrai os arquivos para a staging area, rejeita as linhas com CNPJ inválido e as grava num relatório de erros, converte as unidades para um padrão único e carrega primeiro a dimensão de empresa e depois a fato de indicadores.
O ETL é confundido com a simples replicação de banco. A replicação copia os dados como estão, para ter uma segunda cópia; o ETL muda os dados, integra origens diferentes e grava no formato do DW.
O erro comum é pôr a limpeza e a padronização na fase de extração ou de carga. A extração só lê e copia; a carga só grava; quem limpa, padroniza, converte, elimina duplicidade e troca chaves é a transformação.
Julgue o item. No processo ELT, os dados são transformados num servidor intermediário antes de serem carregados no destino, o que dispensa a capacidade de processamento do banco de destino.
Comentário:
Regra: no ELT, os dados são carregados brutos no destino e transformados depois, dentro do próprio destino, com a capacidade de processamento dele.
A afirmação erra em transformados num servidor intermediário antes de serem carregados no destino: essa é a ordem do ETL. No ELT, a carga vem antes da transformação e o destino faz o trabalho.
Resultado: errado.
Um ETL recebe o mesmo cliente de dois sistemas: num, o nome vem "MARIA SOUZA" e o estado vem "PE"; no outro, o nome vem "Maria Souza" e o estado vem "Pernambuco". O ETL grava um registro só, com o nome em maiúsculas e o estado em sigla. Essas atividades pertencem à fase de
- A) extração, porque ocorrem na leitura dos sistemas de origem.
- B) transformação, e incluem padronização, conversão de códigos e eliminação de duplicidade.
- C) carga, porque o registro único só existe depois de gravado no DW.
- D) extração incremental, porque o CDC identifica o cliente repetido.
- E) carga incremental, porque o segundo registro é tratado como alteração do primeiro.
Comentário:
A) Errada.
Regra: a extração lê os dados das origens e grava uma cópia na staging area, sem tratar o conteúdo.
A alternativa erra em extração, porque ocorrem na leitura dos sistemas de origem: padronizar e juntar registros é tratamento do dado, e não leitura.
B) Certa.
Regra: a transformação padroniza formatos, converte códigos e elimina duplicidade antes da carga.
Pôr o nome em maiúsculas é padronização, trocar "Pernambuco" por "PE" é conversão de códigos e gravar um registro só é eliminação de duplicidade.
C) Errada.
Regra: a carga grava no DW o dado que já saiu tratado da transformação.
A alternativa erra em carga, porque o registro único só existe depois de gravado no DW: o registro único é montado na transformação, e a carga só grava o resultado.
D) Errada.
Regra: o CDC identifica o que mudou na origem desde a última carga; ele não junta registros de origens diferentes.
A alternativa erra em extração incremental, porque o CDC identifica o cliente repetido: achar o mesmo cliente em dois sistemas é eliminação de duplicidade, que é transformação.
E) Errada.
Regra: a carga incremental acrescenta ao DW só os dados novos ou alterados desde a última execução.
A alternativa erra em carga incremental, porque o segundo registro é tratado como alteração do primeiro: os dois registros vêm de origens diferentes na mesma execução, e juntá-los é transformação.
Resultado: alternativa B.
Julgue o item. A staging area é a área intermediária onde o ETL grava os dados extraídos e faz as transformações, e ela não é feita para a consulta do usuário final.
Comentário:
Regra: a staging area é o espaço de trabalho do ETL entre a extração e a carga, sem acesso do usuário de negócio.
A afirmação está certa. O usuário consulta o DW ou os Data Marts, que recebem os dados já tratados, e não a staging area, onde os dados ainda estão brutos ou no meio do tratamento.
Resultado: certo.
Como a banca cobra: a banca descreve uma atividade (limpeza, conversão, eliminação de duplicidade, troca de chaves) e pergunta em que fase ela ocorre, quase sempre a transformação. Ela também troca a ordem do ETL com a do ELT e confunde carga inicial com carga incremental.
OLAP e suas diferenças com OLTP
O sistema de uma loja registra cada venda no caixa, em frações de segundo, e não pode parar. O gerente, por outro lado, quer ver o total vendido por região, por mês e por produto, e trocar de ângulo várias vezes na mesma reunião. As duas tarefas pedem sistemas diferentes: o OLTP (Online Transaction Processing, processamento de transações em tempo real) registra a operação, e o OLAP (Online Analytical Processing, processamento analítico em tempo real) analisa os dados acumulados.
O OLTP é o sistema de cadastro e de movimento do dia a dia: o sistema de protocolo, o de matrícula, o caixa da loja. Ele faz muitas transações curtas de inserção, alteração e exclusão, cada uma mexendo em poucos registros, e usa o modelo relacional normalizado para evitar repetição e manter a consistência. Ele guarda o dado atual, tem muitos usuários ao mesmo tempo e precisa de resposta rápida a cada operação.
O OLAP é a ferramenta de análise sobre o Data Warehouse ou o Data Mart. Ele faz poucas consultas, mas cada consulta lê e soma milhares ou milhões de registros, quase só para leitura. Ele usa o modelo dimensional, guarda o histórico e atende gestores e analistas que tomam decisões.
O OLAP apresenta os dados como um cubo, que é uma estrutura com várias dimensões (o cubo pode ter mais de três, apesar do nome). Cada eixo do cubo é uma dimensão, como produto, região e mês, e cada célula guarda a medida para aquela combinação, como o total vendido do produto X na região Y no mês Z. As dimensões têm hierarquias, que são os níveis de detalhe, como dia, mês, trimestre e ano na dimensão de tempo.
As operações OLAP mudam o ângulo ou o nível de detalhe do cubo:
- Drill-down (detalhar): desce na hierarquia e mostra mais detalhe, como passar do ano para os meses.
- Roll-up ou drill-up (agregar): sobe na hierarquia e resume, como passar dos meses para o trimestre.
- Slice (fatiar): fixa um valor de uma dimensão e tira uma fatia do cubo, que fica com uma dimensão a menos, como ver só o mês de março.
- Dice (cortar em cubos): escolhe um conjunto de valores em duas ou mais dimensões e tira um subcubo, como dois produtos, três regiões e dois meses.
- Pivot ou rotação: troca a posição dos eixos na tela, como pôr os meses nas linhas e as regiões nas colunas, sem mudar os dados.
- Drill-across: compara dados de cubos ou tabelas fato diferentes que compartilham dimensões conformadas.
- Drill-through: sai do cubo e vai até os dados detalhados de origem de uma célula.
Exemplo resolvido: um cubo de vendas tem as dimensões cidade e mês, com a quantidade vendida no primeiro trimestre.
| Cidade | Janeiro | Fevereiro | Março |
|---|---|---|---|
| Recife | 10 | 12 | 8 |
| Olinda | 5 | 7 | 6 |
- Roll-up do mês para o trimestre em Recife: 10 + 12 + 8 = 30.
- Roll-up do mês para o trimestre em Olinda: 5 + 7 + 6 = 18.
- Roll-up também da cidade para o total: 30 + 18 = 48 no trimestre.
- Slice no mês de fevereiro: a fatia mostra Recife 12 e Olinda 7, e a dimensão mês some da tela.
- Pivot: as cidades passam para as colunas e os meses para as linhas, e os seis números continuam os mesmos.
O OLAP se classifica pela forma de guardar o cubo. O MOLAP (OLAP multidimensional) guarda o cubo num banco multidimensional próprio, com os totais já calculados; ele responde muito rápido, mas ocupa espaço e tem limite de volume. O ROLAP (OLAP relacional) guarda os dados em tabelas relacionais, no esquema estrela, e calcula os totais em SQL na hora da consulta; ele aguenta volumes maiores, mas responde mais devagar. O HOLAP (OLAP híbrido) junta os dois: os dados detalhados ficam no relacional e os totais ficam no cubo multidimensional.
Na prática, a coordenação de um programa de vacinação consulta um cubo com as dimensões município, faixa etária, vacina e semana. A coordenadora faz um slice na vacina contra gripe, um roll-up de semana para mês e um drill-down no município com a menor cobertura para ver as unidades de saúde. O sistema que registra cada dose aplicada na unidade é o OLTP; o cubo que ela consulta é o OLAP.
O OLAP é confundido com o próprio Data Warehouse. O DW é o depósito dos dados; o OLAP é a forma de consultar e analisar esses dados em cubos. A mineração de dados (data mining) é outra vizinha: ela procura padrões escondidos com algoritmos, enquanto o OLAP responde perguntas que o usuário já sabe fazer.
O erro comum é trocar slice por dice e roll-up por drill-down. O slice fixa um valor de uma dimensão só; o dice escolhe valores em duas ou mais dimensões; o roll-up sobe para o resumo; o drill-down desce para o detalhe.
Um cubo OLAP tem as dimensões produto, com 5 produtos, região, com 4 regiões, e mês, com 12 meses. Um analista aplica um slice no mês de março e, em outra consulta, um dice com 2 produtos, 3 regiões e 2 meses. O número de células da fatia e o do subcubo são, respectivamente,
- A) 240 e 12.
- B) 20 e 240.
- C) 60 e 12.
- D) 20 e 12.
- E) 48 e 7.
Comentário:
A) Errada.
Conta: o cubo inteiro tem 5 × 4 × 12 = 240 células; a fatia de um mês tem 5 × 4 = 20.
A alternativa erra em 240: 240 é o tamanho do cubo inteiro, e não da fatia de março.
B) Errada.
Conta: o dice com 2 produtos, 3 regiões e 2 meses tem 2 × 3 × 2 = 12 células.
A alternativa erra em 20 e 240: a fatia tem 20 células, mas o subcubo do dice tem 12, e não 240.
C) Errada.
Conta: 60 é 5 × 12, o número de células que fixa uma região, e não um mês.
A alternativa erra em 60 e 12: o slice foi no mês, e por isso a fatia tem 5 × 4 = 20 células.
D) Certa.
Conta: fatia de um mês, 5 × 4 = 20 células; subcubo do dice, 2 × 3 × 2 = 12 células.
O slice fixa o mês e deixa produto e região inteiros; o dice escolhe valores nas três dimensões.
E) Errada.
Conta: 48 é 4 × 12, a fatia que fixa um produto, e não um mês; 7 é a soma 2 + 3 + 2, e o número de células é o produto, 2 × 3 × 2 = 12.
A alternativa erra em 48 e 7: o número de células sai da multiplicação, 20 e 12.
Resultado: alternativa D.
Julgue o item. A operação slice escolhe um conjunto de valores em duas ou mais dimensões do cubo e gera um subcubo, enquanto a operação dice fixa um único valor de uma dimensão.
Comentário:
Regra: o slice fixa um valor de uma dimensão e tira uma fatia; o dice escolhe valores em duas ou mais dimensões e tira um subcubo.
A afirmação erra em A operação slice escolhe um conjunto de valores em duas ou mais dimensões do cubo e gera um subcubo, enquanto a operação dice fixa um único valor de uma dimensão: as definições estão trocadas entre as duas operações.
Resultado: errado.
Julgue o item. Ao passar a visão de vendas do nível de trimestre para o nível de mês, o analista faz um drill-down, e a operação pivot só muda a posição dos eixos, sem alterar os valores das células.
Comentário:
Regra: o drill-down desce na hierarquia, para mais detalhe; o pivot gira os eixos da visão e mantém os dados.
A afirmação está certa. O mês está abaixo do trimestre na hierarquia de tempo, e por isso a passagem é um drill-down; o pivot só reorganiza a tabela na tela.
Resultado: certo.
Assinale a alternativa que atribui corretamente uma característica ao OLTP ou ao OLAP.
- A) O OLAP usa modelo normalizado para evitar repetição e garantir a consistência das transações.
- B) O OLTP guarda um longo histórico e atende principalmente gestores em consultas de leitura.
- C) O OLTP faz muitas transações curtas de inserção, alteração e exclusão, com dados atuais.
- D) O OLAP tem como operação típica a atualização de poucos registros por vez.
- E) O OLAP no modo ROLAP guarda os totais já calculados num banco multidimensional próprio.
Comentário:
A) Errada.
Regra: o modelo normalizado é do OLTP; o OLAP usa o modelo dimensional, que aceita repetição nas dimensões.
A alternativa erra em O OLAP usa modelo normalizado: quem usa o modelo normalizado para manter a consistência das transações é o OLTP.
B) Errada.
Regra: o OLTP guarda o dado atual e atende os operadores do dia a dia; o histórico longo e a leitura gerencial são do OLAP.
A alternativa erra em guarda um longo histórico e atende principalmente gestores em consultas de leitura: essas são características do OLAP.
C) Certa.
Regra: o OLTP registra a operação do dia a dia em muitas transações curtas, que mexem em poucos registros atuais.
A alternativa descreve o OLTP sem trocar nada com o OLAP.
D) Errada.
Regra: a operação típica do OLAP é a leitura que agrega muitos registros.
A alternativa erra em a atualização de poucos registros por vez: atualizar poucos registros é a operação típica do OLTP.
E) Errada.
Regra: o ROLAP guarda os dados em tabelas relacionais e calcula os totais em SQL na hora; quem guarda os totais num banco multidimensional é o MOLAP.
A alternativa erra em no modo ROLAP: a descrição é a do MOLAP.
Resultado: alternativa C.
Como a banca cobra: a banca atribui ao OLAP uma característica do OLTP (dado atual, modelo normalizado, muitas atualizações) ou o contrário. Ela também descreve uma operação e pede o nome dela, e troca MOLAP com ROLAP.
- Data Warehouse e Data Mart
- Definições
- Orientado por assunto
- Integrado
- Variante no tempo
- Não volátil
- Granularidade
- Data Mart
- Dependente
- Independente
- Abordagens
- Inmon de cima para baixo
- Kimball de baixo para cima
- Dimensões conformadas
- Peças ao redor
- Staging area
- ODS
- Metadados
- Modelagem dimensional
- Tabela fato e dimensão
- Quatro passos do projeto
- Aditiva, semiaditiva, não aditiva
- SCD tipos 0 a 3
- Estrela, floco de neve, constelação
- ETL
- Extração completa ou incremental
- Transformação
- Carga das dimensões e da fato
- ELT
- OLAP e OLTP
- Cubo e hierarquias
- Drill-down e roll-up
- Slice, dice e pivot
- MOLAP, ROLAP e HOLAP
- Definições
Quadros e comparações
A primeira tabela compara as duas abordagens de construção do armazém.
| Ponto | Inmon | Kimball |
|---|---|---|
| Sentido da construção | De cima para baixo (top-down) | De baixo para cima (bottom-up) |
| Primeira entrega | DW corporativo | Data Mart de um processo |
| Modelo do DW central | Normalizado | Dimensional |
| Data Marts | Dependentes, tirados do DW | Ligados por dimensões conformadas |
| Integração | No DW central | Na matriz de barramento |
A segunda tabela compara os dois esquemas dimensionais.
| Ponto | Esquema estrela | Esquema floco de neve |
|---|---|---|
| Dimensões | Uma tabela só, desnormalizada | Várias tabelas, normalizadas |
| Repetição nas dimensões | Maior | Menor |
| Junções na consulta | Menos | Mais |
| Tabela fato | A mesma | A mesma |
| Facilidade para o usuário | Maior | Menor |
A terceira tabela põe OLTP e OLAP ponto a ponto.
| Ponto | OLTP | OLAP |
|---|---|---|
| Finalidade | Registrar a operação do dia a dia | Analisar e apoiar a decisão |
| Operação típica | Inserção, alteração e exclusão | Leitura que agrega muitos registros |
| Registros por operação | Poucos | Milhares ou milhões |
| Modelo | Relacional normalizado | Dimensional |
| Dado | Atual | Histórico |
| Usuário | Operador, atendente | Gestor, analista |
A quarta tabela compara os tipos de dimensão que muda lentamente.
| Tipo | O que faz | Histórico |
|---|---|---|
| Tipo 0 | Mantém o valor original | Não muda |
| Tipo 1 | Sobrescreve o valor | Perde o histórico |
| Tipo 2 | Cria nova linha e nova chave | Histórico completo |
| Tipo 3 | Cria coluna do valor anterior | Uma mudança só |
Para decorar
- Quatro características de Inmon: orientado por assunto, integrado, variante no tempo e não volátil.
- Não volátil: o usuário não altera nem apaga registro por registro; o DW recebe cargas periódicas.
- Data Mart dependente: recebe os dados do DW corporativo. Independente: recebe direto das origens.
- Inmon: de cima para baixo, DW normalizado primeiro. Kimball: de baixo para cima, dimensões conformadas.
- Nível de granularidade (Inmon): alto quer dizer menos detalhe; baixo quer dizer mais detalhe.
- Quatro passos de Kimball: processo de negócio, granularidade, dimensões, fatos.
- Fato: medidas numéricas do evento. Dimensão: contexto descritivo para filtrar e agrupar.
- Aditiva: soma em tudo. Semiaditiva: não soma no tempo (saldo, estoque). Não aditiva: não soma (percentual).
- SCD tipo 1: sobrescreve. Tipo 2: nova linha e nova chave substituta. Tipo 3: coluna do valor anterior.
- Estrela: dimensões desnormalizadas. Floco de neve: dimensões normalizadas.
- ETL: extração, transformação e carga; dimensões carregadas antes da fato. ELT: carga antes da transformação.
- Slice: fixa um valor de uma dimensão. Dice: escolhe valores em duas ou mais dimensões.
- Drill-down: desce para o detalhe. Roll-up: sobe para o resumo. Pivot: gira os eixos.
- Células de um cubo: produto das quantidades de valores de cada dimensão.
Pegadinhas
| # | Errado | Certo |
|---|---|---|
| 1 | O DW é volátil, porque recebe novas cargas. | O DW é não volátil: recebe cargas, mas o usuário não altera nem apaga registros. |
| 2 | O DW é orientado por aplicação. | O DW é orientado por assunto, como cliente, produto e venda. |
| 3 | Kimball constrói o DW corporativo primeiro, de cima para baixo. | Isso é Inmon. Kimball constrói de baixo para cima, por Data Marts. |
| 4 | O Data Mart dependente recebe os dados direto dos sistemas de origem. | Quem recebe direto das origens é o independente. O dependente recebe do DW. |
| 5 | O floco de neve desnormaliza as dimensões. | O floco de neve normaliza as dimensões. O esquema estrela é o desnormalizado. |
| 6 | O SCD tipo 1 guarda o histórico em nova linha. | O tipo 1 sobrescreve o valor. Quem cria nova linha é o tipo 2. |
| 7 | O saldo de conta é uma medida aditiva. | O saldo é semiaditivo: não se soma ao longo do tempo. |
| 8 | A limpeza e a eliminação de duplicidade ocorrem na carga. | Essas atividades ocorrem na transformação. |
| 9 | No ELT, a transformação ocorre antes da carga. | No ELT, a carga vem antes e a transformação ocorre no destino. |
| 10 | O slice escolhe valores em duas ou mais dimensões. | Isso é o dice. O slice fixa um valor de uma dimensão só. |
| 11 | O roll-up desce na hierarquia, do ano para o mês. | O roll-up sobe para o resumo. Descer para o detalhe é o drill-down. |
| 12 | O OLAP usa modelo normalizado e muitas atualizações curtas. | Essas são características do OLTP. O OLAP usa modelo dimensional e leitura. |
Fontes e data
- [1] Literatura de referência de Data Warehouse (linhas de Bill Inmon e de Ralph Kimball), explicada com palavras próprias. O guia não usa norma técnica pública.
Texto conferido em 14/10/2026.