• No results found

Cultivation approach for integrating HIS

6.3 Strategies for improving the information systems

6.3.1 Cultivation approach for integrating HIS

O Mondrian [6,10] é um projeto open source inspirado num produto não comercial: o Microsoft Analysis Services. Este produto contém a linguagem MDX [8,13] como extensão do SQL para business intelligence e XMLA baseado em XML como interface de comunicação. O Mondrian é um engine OLAP implementado em JAVA e que corre num web server como o Tomcat ou o Jboss.

O Mondrian permite definir schemas dos cubos de dados que no fundo é um ficheiro de XML que determina a estrutura lógica de como os dados das tabelas de base de dados relacional aparecem no cubo. Esta camada permite a criação de campos virtuais que não existem no modelo físico, como por exemplo medidas calculadas. Permite também a possibilidade de alterar nomes dos campos e definir hierarquias. Pode ser vantajoso numa situação em que com a mesma DW como ponto de partida, pode-se criar vários cubos orientados às necessidades de diferentes utilizadores, aproximando-os do vocabulário e estrutura de dados que estão mais habituados.

O Mondrian contém muitos projetos associados que cresceram em torno dele como por exemplo o Jpivot, Olap4J, Ctools, etc.

9.1 Instalação

Sendo um projeto open source existem várias releases e branches (ver no gitHub https://github.com/pentaho/mondrian). As versões que contêm o Jpivot já integrado e o ficheiro “mondian.war” são as melhores como será explicado adiante.

O Mondrian pode ser deployed num servidor aplicacional ou ser utilizado através de outras aplicações web. A forma mais rápida e comoda é colocar o ficheiro “mondrian.war” existente na release na pasta “webapps” do Tomcat e fazer restart ao serviço. A integração com o Jpivot permite verificar se a instalação foi bem sucedida ou acedendo ao endreço (http://<servidor>:8080/mondrian/). Deverá apresentar uma lista com várias opções de teste baseadas no DW de demostração chamado “foodMart”.

72

Como o Mondrian irá aceder a uma base de dados em MySql, é preciso fazer o

download do driver “com.mysql.jdbc.driver” e colocar o ficheiro “Mysql.jar” na

diretoria “lib” do projecto.

O próximo passo será criar o schema em XML.

9.2 Schemas do cubo de dados

A definição do schema segue uma notação própria especificada na documentação. São definidas as dimensões com os respetivos atributos e suas hierarquias. Estes atributos mapeiam com os campos de BD. É definida a tabela de factos e medidas. Pode-se criar mais medidas com tipos de agregação diferente

Estes schemas em XML têm uma sintaxe muito precisa e as mensagens de erro são muito opacas. Felizmente a Pentaho desenvolveu uma ferramenta para ajudar a construir estes ficheiros: o schema workbench. Para tirar total proveito desta ferramenta, pode-se preencher os dados de conexão à base de dados acedendo ao item de menu “Tools”. Esta opção permite mapear corretamente o schema com os campos da BD no DW. De referir que é comum ocorrer um problema quando se executa este programa (mondrian.sh para Linux e mondrian.bat para Windows) relacionado com o driver JDBC do Mysql. Para o resolver ou se cria uma diretoria “drivers” e se coloca o ficheiro do driver “Mysql.jar” ou corrige-se o script.

73

Apesar de esta ferramenta ajudar bastante na construção do schema, não efetua qualquer tipo de validação de estrutura e sintaxe do documento, sendo bastante fácil de cometer erros que depois são difíceis de depurar. Para mitigar estes problemas, é aconselhável inserir uma dimensão de cada vez e começar com as mais simples. A construção é explicada com algum detalhe na documentação da ferramenta e também existem alguns vídeos elucidativos no youtube que auxiliam nesta tarefa.

Ao fazer “new schema” irá criar um ficheiro só com o elemento “schema” em que se pode dar um nome mais inteligível. O primeiro passo será criar as dimensões. Em cada uma existem várias opções, mas as mais importantes consistem em associar a tabela de BD, os campos e definir as hierarquias. Para cada hierarquia define-se os níveis “Levels” em que se mapeia com o respetivo campo na BD. A ordem com que esses níveis são criados vai definir a sequência da hierarquia. A um nível se pode adicionar “properties” que seriam campos informativos. Por exemplo, numa hierarquia da dimensão utilizador Departamento => Grupo => Utilizador, faz sentido acrescentar os campos “Nacionalidade”,”Género”, etc como properties no nível “utilizador”. O problema é que na maioria das ferramentas analíticas que foram usadas estas properties são ignoradas. A resolução deste problema passou por criar mais hierarquia com esses campos.

74

O próximo passo é criar um cubo dentro do schema associando a tabela de factos e criar dimensões associando-as às dimensões criadas anteriormente. Pode parecer uma redundância, mas para um universo em que existam vários cubos que usam as mesmas dimensões conformadas (e tabelas de factos diferentes) só é preciso defini-las uma única vez. Finalmente, define-se no cubo as medidas, associando o campo da tabela de factos e o tipo de agregação (sum, avg, count). Foi criado uma medida chamada “contagem” que não mapeia diretamente a nenhum campo da tabela de factos na BD fazendo um

count das ocorrências. Também é possível criar dimensões calculadas e ainda formatar

valores. Para a medida “tempo gasto” que é minutos, tentou-se formatar da forma “x h y m” no schema, mas sem sucesso. Esta formatação é possível de fazer diretamente na

query de MDX (ver Anexo F– Formatar tempo gasto no MDX )

9.3 Configuração

Depois de criar os schemas é necessário definir os data sources que ligam os

schemas ao DW físico com uma ligação de BD. É útil colocar a funcionar o Jpivot para

fazer testes e verificar se o schema em XML está correto. Deve-se copiar o ficheiro do schema para /WEB-INF/queries/ e alterar os ficheiros /WEB-INF/queries/Mondrian.jsp e /WEB-INF/queries/mondrianXMLA.jsp: Atributos de jp:mondrianQuery Valor jdbcDriver Com.mysql.jdbc.Driver jdbcUrl Jdbc:mysql://<servidorBD>/<database>?user=<username>&password=<pass> catalogUri /WEB-INF/queries/<ficheiro_schema>.xml Tabela 37- Atributos a preencher em jp:mondrianQuery

Dentro do elemento <jp:mondrianQuery> deverá estar uma query MDX válida. No contexto deste projeto poderia ser:

<jp:mondrianQueryid=”query01” jdbcDriver=”com.mysql.jdbc.Driver”

jdbcUrl=”jdbc:mysql://localhost/db_DW?user=xxxxx&password=yyyyy”

catalogUri=”/WEB-INF/queries/pedidosMart.xml” connectionPooling=”false”>

select {[Measures].[Tempo Gasto], [Measures].[Acompanhamentos]} ON COLUMNS, Hierarchize({([Data].[Todos], [Operacao].[Todos])}) ON ROWS

from [Pedidos]

75 Acedendo ao endereço:

http://<servidor>:8080/mondrian/testpage.jsp?query=mondrian

Deverá aparecer uma página da ferramenta Jpivot e a query definida anteriormente como a de omissão. Este é o ponto de partida para proceder a eventuais afinações do ficheiro do schema até estar tudo em condições de passar a usar outras ferramentas.

76