segunda-feira, 13 de maio de 2019

Criando relatórios para o Project Roadmap - parte 2


Olá pessoal –

Esta é a parte 2 da série de posts sobre a criação de relatórios utilizando dados do Project Roadmap. Se você ainda não leu a primeira parte, volte lá pois é importante.

Bem, agora que nós já sabemos como estabelecer uma conexão com o CDS, como configurar as permissões adequadas para termos direito a obter os dados, e quais as tabelas que armazenam as informações do Roadmap, vamos entender um pouco melhor a estrutura das tabelas mais importantes para criarmos nosso primeiro relatório.

A primeira tabela que iremos analisar no contexto atual é a tabela msdyn_roadmap. Como seu próprio nome sugere, esta tabela armazena dados gerais dos roadmaps criados na organização. Dentre as várias colunas existentes na tabela, as mais relevantes (e que iremos utilizar para construir o nosso relatório) são:

Nome da coluna
Detalhes
msdyn_name
O nome do roadmap ou dos itens (linhas) criados para cada roadmap
msdyn_roadmapip
O código único identificador do roadmap ou item (chave primária)
msdyn_type
O tipo de dado (0 = Roadmap | 1 = RoadmapRow)
msdyn_type_display
O nome por extenso do tipo de dado



Ao analisar a estrutura desta tabela, é interessante notar que, por mais que seu nome seja msdyn_roadmap, ela não armazena apenas informações dos roadmaps criados... a tabela também é responsável por armazenar as linhas (rows) criadas para cada roadmap. Para evitar qualquer confusão e criar uma estrutura de dados que mantenha uma organização mais lógica, eu prefiro segmentar a tabela para que ela exiba apenas informações a nível dos roadmaps, sem incluir as linhas. Assim, apliquei um filtro na coluna msdyn_type para que apenas sejam selecionados dados onde o valor seja igual a 0 (zero):



O passo seguinte foi duplicar a tabela msdyn_roadmap e criar uma nova tabela chamada msdyn_roadmaprow, a qual será responsável por incluir apenas dados onde o valor da coluna msdyn_type seja igual a 1 (um), ou seja, as linhas (rows) de cada roadmap:




Após duplicar a tabela e alterar o filtro, uma ação complementar foi realizada: a coluna msdyn_parentroadmapid foi adicionada à tabela. A inclusão desta coluna é muito importante e deve ser feita na tabela duplicada, uma vez que cada uma das linhas (rows) estará conectada a seu respectivo roadmap. Em outras palavras, cada linha é um filho do roadmap (pai).

Após realizar as alterações, vamos dar uma pausa para estabelecer um relacionamento entre as duas colunas, de modo a compreender melhor como será a sua comunicação:




A imagem acima deixa as coisas mais claras: para cada roadmap existente, podem haver múltiplas linhas (rows) criadas. Faz sentido pra você?

Então vamos lá...

O próximo passo será organizar as informações disponíveis na tabela msdyn_roadmapitem. Esta tabela tem como finalidade apresentar todas as tarefas e marcos cadastrados em cada uma das linhas existentes nos roadmaps. Está ficando complicado? Dê uma olhada na imagem abaixo, que tenta demonstrar cada um dos elementos disponíves em um roadmap:




Então, vamos em frente!

Da tabela msdyn_roadmapitem vamos precisar das seguintes colunas:


 Nome da coluna
Detalhes
msdyn_duedate
A data de vencimento do item
msdyn_name
O nome do item
msdyn_roadmapid
O id do roadmap ao qual o item está relacionado
msdyn_startdate
A data de início do item
msdyn_status_display
O status do item, conforme definido no Roadmap
msdyn_type_display
O tipo de item (fase ou data key date)




O passo seguinte será estabelecer um relacionamento um-para-muitos entre a coluna msdyn_roadmapid da tabela msdyn_roadmaprow e a coluna msdyn_roadmapid da tabela msdyn_roadmapitem, pois para cada linha de um roadmap podem haver múltiplos itens:



Agora está ficando legal. Se voltarmos para a área de relatórios do Power BI, será possível criar uma visão inicial de um relatório, usando informações dos roadmaps, das linhas e dos itens:




Porém... (já reparou que sempre há um porém?), temos um pequeno problema: o Project Roadmap permite que key dates sejam criados sem que necessariamente estejam associados às linhas. Estes são key dates que pertencem ao roadmap de maneira geral, não estando vinculados às linhas existentes. Quando isso acontece, por não estarem associados à nenhuma das linhas, os key dates do roadmap acabam ficando órfãos no relatório – é essencialmente o que está acontecendo com os quatro primeiros itens da visão acima.

Na imagem abaixo, é possível visualizar os key dates do roadmap:




Para resolver o problema, vamos tomar as seguintes ações:

1) Duplicar a tabela msdyn_roadmapitem, criando uma nova tabela chamada msdyn_roadmapkeydates
2) Aplicar um filtro na nova tabela para que os dados da coluna msdyn_type_display seja apenas do tipo KeyDate
3) Remover a coluna msdyn_duedate da tabela



Por fim, deve ser criado um novo relacionamento do tipo um-para-muitos entre a coluna msdyn_roadmapid da tabela msdyn_roadmap e a coluna msdyn_roadmapid da tabela msdyn_roadmapkeydates:



Uma vez realizados os ajustes e configurações necessárias em cada uma das tabelas principais, com seus respectivos filtros e relacionamentos, você poderá começar a montar o seu dashboard. Aqui um exemplo visual de possíveis resultados que podemos obter:




Próximos passos

Além das configurações sugeridas neste post, você também pode utilizar as tabelas adicionais (msdyn_roadmapitemlink, msdyn_roadmapRowLink e msdyn_roadmapusersetting) para estabelecer conexões entre os dados dos roadmaps e os projetos existentes no seu ambiente do Project Online. Neste cenário, além de exibir informações relacionadas aos roadmaps, você também poderia exibir informações gerais dos projetos e das tarefas dos cronogramas, de modo a criar uma visão muito mais abrangente do relacionamento existente entre os projetos e tarefas com os roadmaps.

Vou ficando por aqui, e espero que você tenha gostado do post!

Um forte abraço.