Tenho quatro tabelas, dois Fatos e duas Dimensões. Abaixo, listei as colunas relevantes dessas tabelas e os resultados que gostaria de ver no Cubo.
Fact Order table
----------------
SK_Order
FirstEverOrder
Dim Order
---------
SK_Order
Fact Product Order
------------------
SK_Order
SK_Product
Number of Products
Dim Product
-----------
SK_Product
Product Name
Nos resultados, gostaria de ver a taxa de primeiro pedido. Ou seja, de todas as vezes que um produto aparece em um pedido, quantos desses pedidos foram o primeiro pedido feito pelo cliente?
Products First Ever Order Rate (%)
-------- --------------------------
Product 1 3%
Product 2 2%
Uma situação de exemplo para o uso deste relatório pode ser que você queira anunciar os produtos que aparecem com frequência nos primeiros pedidos.
Até o momento tenho minhas tabelas relacionadas juntas no cubo da seguinte forma:
Por favor, eu quero fazer isso no cubo. Sei que pode ser feito por meio de um procedimento armazenado com um relatório do SSRS, mas quero fazer no cubo.
Não sei o que fazer nas guias Cálculos ou Relacionamentos de uso da dimensão, ou se preciso fazer mais alguma coisa na guia Estrutura do cubo. Por favor, seja detalhado em sua resposta.
Na guia Dimension Usage, clique em ... Na célula que é Fact Order e Dim Product. Mude essa célula para um relacionamento muitos-para-muitos.
Em seguida, adicione uma medida Sum na coluna FirstEverOrder chamada First Ever Order Count. Adicione também uma medida Count que é uma contagem de linhas chamada Order Count.
Agora crie uma nova medida calculada que é:
Agora você deve ser capaz de construir seu relatório como você mostrou. Esse é o poder de muitos para muitos.
Publiquei esta pergunta em março de 2016, quando não entendia totalmente a metodologia Kimball. Agora tenho uma compreensão muito melhor, adquiri mais experiência e posso responder à minha própria pergunta.
A resposta é, eu estava perdendo uma tabela de fatos! Eu precisava de uma tabela de fatos no grão do produto (ou seja, um produto por linha na tabela de fatos) para conter minha medida ("First Ever Order Rate"). Eu poderia então colocar uma chave estrangeira na tabela de fatos apontando para a dimensão Produto.
Alternativamente, eu poderia colocar a medida na própria dimensão. Isso efetivamente tornaria a dimensão uma tabela de fatos e todos os atributos de dimensão se tornariam "dimensões degeneradas". A mesma tabela pode então ser usada como fonte para o grupo de medidas Produto e a Dimensão do Produto no cubo.
Para calcular a proporção, teria sido muito mais fácil fazer isso no ETL, em vez de um cálculo no cubo.
O problema com os relacionamentos Muitos-para-Muitos no cubo é que eles relacionam muitos membros de dimensão em uma dimensão a muitos membros de dimensão em outra dimensão. Eles não relacionam muitas linhas de fatos em uma tabela de fatos a muitas linhas de fatos em outra tabela de fatos. Não é assim que a tecnologia kimball ou MS cube foi projetada para funcionar.