none
Quais as relações entre as varias tabelas de factos em um DW? RRS feed

  • Pergunta

  • Qual a relação entre as tabelas de factos? terá que existir? ou cada uma trata um processo de negocio, do tipo vendas, com as demais dimensões. 

    A relação apenas será as dimensões?

    Exemplo: vendas + encomendas (client, produto, colaborador, tempo, etc...)

    segunda-feira, 7 de maio de 2012 00:20

Respostas

  • Existem relações regulares (Regular Relationship) - As comuns, quando uma tabela fato usa uma chave - idealmente uma surrogate key - (SK) pra especificar uma linha na sua DimTable.

    Existem relações referenciadas (Referenced Relationships), que é quando você quer criar uma dimensão para uma Tabela Fato que não possui colunas referenciando ela diretamente. No lugar disso ela usa uma dimensão em comum (por referência) que usa uma chave pra apontar para esta outra dimensão ex.: Tabela de Vendas FactSales possui a coluna CustomerKey, que referencia regularmente DimCustomer.  Suponha que a DimCustomer possui uma coluna GeographyKey que aponta para uma tabela chamada DimGeography. Você pode a partir disso criar em seu cubo a sua dimensão DimGeography. É uma relação entre a tabela fato FactSales e a tabela de dimensão DimGeography, usando a tabela DimCustomer como referência.

    Fact -> DimReferencia -> DimDesejada

    Temos também Relações Fato (Fact Relationships) que dimensionam a fato com uma dimensão degenerada (degenerated dimensions). Uma dimensão degenerada é uma dimensão criada a partir de uma coluna da própria fato. Seria por exemplo o número de registro de uma venda, um dado realmente granular, que não possui uma tabela só pra ele, exatamente por ser um dado exclusivo ao fato. Se você quiser dimensionar a fato por uma coluna assim, se cria a dimensão a partir da coluna da própria tabela fato, e diz-se que esta é uma relação fato. Por conta disso a granularidade deste atributo é necessariamente igual à da própria tabela fato. Essas dimensões degeneradas normalmente são mostradas por uma drillthrough action, que é quando você cria uma action pra entrar nos detalhes granulares dos dados da fato, a partir de dimensão superior.  Você pode ver mais detalhes em:

    http://en.wikipedia.org/wiki/Degenerate_dimension

    http://msdn.microsoft.com/en-us/library/ms365400.aspx

    http://technet.microsoft.com/en-us/library/ms167409.aspx

    http://sqlblog.com/blogs/mosha/archive/2008/09/01/drillthrough-on-calculated-measures.aspx

    http://beyondrelational.com/modules/2/blogs/101/posts/13327/ssrs-38-drill-down-or-drill-through.aspx

    E por fim temos as Many to Many Relationships, que por mais que eu tente, eu não consigo entender. Sei só que é um jeito de ligar linhas da tabela fato uma dimensão, em uma relação M:N . Enquanto em um ambiente relacional podemos criar tais relações entre uma tabela1 (PK = table1_pk) e uma tabela2 (PK = table2_pk) através de uma tabela intermediária que tenha as chaves de ambos (Tabela1_2 (PK composta por table1_pk e table2_pk), pra fazer isso entre uma tabela fato e uma dimensão, PARECE QUE precisamos de uma tabela fato intermediária e uma dimensão intermediária...

    Tente se guiar por esse texto: 

    http://www.sqlmag.com/article/data-management/many-to-many-relationships-in-the-data-warehouse

    Neste texto abaixo, não consigo ver esses tais "dimensão intermediária" e "fato intermediário", pois parecem simples tabelas relacionais.

    http://msdn.microsoft.com/en-us/library/ms345139(v=sql.90).aspx

    outro bom texto:

    http://technet.microsoft.com/en-us/library/ms170463.aspx

    Assim, quem puder dar um exemplo melhor desta última relação, por favor, pois também tenho dúvidas.

    Aqui temos algumas figuras referentes a todas essas relações: http://technet.microsoft.com/en-us/library/ms175669.aspx

    segunda-feira, 7 de maio de 2012 03:48