Imagem de fundo

Uma Prefeitura implantado um Data Warehouse para análise de dados financeiros com foco ...

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;