domingo, 8 de novembro de 2015

Datawarehouse Tutorial - do Microstrategy para o Business Objects

A plataforma Microstrategy traz contigo em sua instalação, um datawarehouse de exemplo, em Access, chamado Tutorial.

Este datawarehouse no formato snowflake, é mapeado no produto Microstrategy Developer, criando sua camada de esquema, através de: tabelas, fatos, atributos e hierarquias.

Em um dos meus estudos multi-plataformas, resolvi mapeá-lo na ferramenta SAP Business Objects, o transformando em um Universo da plataforma, através do utilitário Information Design Tool.

Para isso, selecionei as hierarquias: Produto, Geografia, Cliente e Tempo, apenas de forma parcial, e a fato Order_Detail.

Abaixo o resultado de meu teste com algumas telas:



Meu projeto Tutorial no utilitário, é um universo simples e gravado localmente. Possui basicamente três componentes:

  • Conexão ODBC com o datawarehouse
  • Data Foundation - camada de banco de dados
  • Business Layer - camada de negócios


Primeiro passo foi criada a conexão ODBC:



Depois, foi a hora de definir a camada de banco de dados. Você pode inserir visualizações, que são abas para organizar os grupos de tabelas, no caso as hierarquias ou fatos.

Hierarquia Produto:



Hierarquia Geografia:


Hierarquia Tempo:





 Fato Order Detail:


Pronto. Data Foundation criada. Agora é hora da Business Layer. 
Nessa camada, você define as dimensões e as métricas. Fazendo um paralelo com o Microstrategy, cada objeto dimensão seria um objeto atributo do Microstrategy, e na métrica não existe diferença.


Agora executando uma consulta de teste:



SQL:

SELECT
  max( LU_CATEGORY.CATEGORY_DESC  ),
  Sum(ORDER_DETAIL.QTY_SOLD)
FROM
  LU_CATEGORY,
  ORDER_DETAIL,
  LU_ITEM,
  LU_SUBCATEG
WHERE
  ( LU_CATEGORY.CATEGORY_ID=LU_SUBCATEG.CATEGORY_ID  )
  AND  ( LU_SUBCATEG.SUBCAT_ID=LU_ITEM.SUBCAT_ID  )
  AND  ( LU_ITEM.ITEM_ID=ORDER_DETAIL.ITEM_ID  )
GROUP BY

  LU_CATEGORY.CATEGORY_ID


Assim obtivemos sucesso no mapeamento de nosso universo. Mas não fiquei em paz, decidi também fazer um exemplo de transformação do Microstrategy, por exemplo um MTD (Month-to-date)

Para resolver essa questão, contei com uma tabela de transformação do datawarehouse Tutorial. Depois, criei um alias table da fato Order Detail, em uma nova visualização do Data Foundation, e fiz os respectivos joins:




Observe, que assim como na transformação no Microstrategy, a tabela LU_DAY faz join com o campo DAY_DATE com a tabela de transformação. A diferença está no join com a fato. Ao invés do join ser da LU_DAY com o campo DAY_DATE, quem faz o join com o campo ORDER_DATE da fato é o campo MTD_DAY_DATE da tabela de transformação.

Também utilizei o recurso contextos do BO, esse exige um capítulo aparte, para que o modelo não fique em LOOP.

O próximo passo foi criar uma métrica Quantidade Vendida MTD apontando para o QTY_SOLD dessa fato com alias table na Business Layer, e executar as consultas:




Observe que no meu template tenho além do atributo Data, duas métricas. A métrica Quantidade Vendida comum, da respectiva data, e a Quantidade Vendida MTD, que é o acumulado até a data. 

Assim como no Microstrategy, repare que dois passos de SQL são criados, e repare nos joins: LU_DAY.DAY_DATE = ORDER_DETAIL.ORDER_DATE na primeira consulta e na segunda MTD_DAY.MTD_DAY_DATE = ORDER_DETAIL.ORDER_DATE

E assim concluímos o artigo.

Por hoje é tudo pessoal. Abraços

Fabio Idalgo

Nenhum comentário:

Postar um comentário