Imagem de fundo

Uma Prefeitura implantado um Data Warehouse para análise de...

Uma Prefeitura implantado um Data Warehouse para análise de dados financeiros com foco em receitas e despesas públicas. O modelo multidimensional utilizado possui uma tabela fato principal chamada FatosFinanceiros e três dimensões: Tempo, Categoria e Localidade cujas estruturas são:


Tabela Fato: FatosFinancairos

Dado

Tipo de Dado

Descrição

IDFato

INT

Identificador único da transação

IDTempo

INT

Chave estrangeira para a dimensão Tempo

IDCategoria

INT

Chave estrangeira para a dimensão Categoria

IDLocalidade

INT

Chave estrangeira para a dimensão Localidade

Valor

DECIMAL(10,2)

Valor da receita ou despesa


Dimensão: Tempo

Dado

Tipo de Dado

Descrição

IDTempo

INT

Identificador único do período

Ano

INT

Ano do registro

Mes

INT

Mês do registro


Dimensão: Categoria

Dado

Tipo de Dado

Descrição

IDCategoria

INT

Identificador único da categoria

NomeCategoria

VARCHAR (255)

Nome da categoria (ex.: Educação, Saúde)


Dimensão: Localidade

Dado

Tipo de Dado

Descrição

IDLocalidade

INT

Identificador único da localidade

NomeLocalidade

VARCHAR (255)

Nome da localidade


Um Auditor necessita fazer uma análise para identificar o valor total das receitas e despesas por ano e por categoria. À consulta deve ser otimizada para o modelo multidimensional cuja melhor prática, considerando o modelo descrito, é


A

SELECT t.Ano, l.NomeLocalidade, SUM(f.Valor) AS Total

FROM FatosFinanceiros f

JOIN Tempo t ON f.lDTempo = t.IDTempo

JOIN Localidade l ON f.lDLocalidade = l.IDLocalidade

GROUP BY t.Ano, l.NomeLocalidade;


B

SELECT t.Ano, c.NomeCategoria, SUM(f.Valor) AS Total

FROM FatosFinanceiros f

JOIN Tempo t ON f.IDTempo = t.IDTempo

JOIN Categoria c ON f.IDCategoria = c.IDCategoria

GROUP BY t.Ano, c.NomeCategoria;


C

SELECT l.NomeLocalidade, c.NomeCategoria, SUM(f.Valor) AS Total

FROM FatosFinanceiros f

JOIN Localidade l ON f.IDLocalidade = l.IDLocalidade

JOIN Categoria c ON f.IDCategoria = c.IDCategoria

GROUP BY l.NomeLocalidade, c.NomeCategoria;


D

SELECT t.Mes, c.NomeCategoria, SUM(f.Valor) AS Total

FROM FatosFinanceiros f

JOIN Tempo t ON f.IDTempo = t.IDTempo

JOIN Categoria c ON f.IDCategoria = c.IDCategoria

GROUP BY t.Mes, c.NomeCategoria;


E

SELECT c.NomeCategoria, l.NomeLocalidade, SUM(f.Valor) AS Total

FROM FatosFinanceiros f

JOIN Categoria c ON f.IDCategoria = c.IDCategoria

JOIN Localidade l ON f.IDLocalidade = l.IDLocalidade

GROUP BY c.NomeCategoria, l.NomeLocalidade;