Agras Zeta Atino

Un blog mas de tecnologia, locuras y procrastinacion

Parser de XMLA para PHP

There’s an english description at the end of the post.

Hace unos meses, un cliente me pregunto si era posible acceder a los datos de una Base de datos Multidimensional (o Cubo Olap), recuerdo haber buscado unas cuantas horas en internet… pero en realidad no encontre nada… Especialmente, nada que utilizara Pentaho.

Me dedique a analizar bien la arquitectura interna de la aplicacion, junto con otras suites, el punto en comun entre todas estas, se llama Mondrian, que es realmente el puente entre una aplicacion especifica, y una base de datos multidimensional (Aunque no es el unico). En este caso, mondrian se encarga de traducir una consulta MDX en SQL utilizando jdbc por debajo, para poder conectarse literalmente a cualquier RDBMS. Una consulta MDX, se ve mas o menos asi:

with member [Measures].[PercTotalSales] as’ Sum( TopCount([Product].CurrentMember.Children, 2, [Unit Sales]), [Unit Sales] )/([Product].CurrentMember, [Unit Sales])’,FORMAT_STRING = ‘##.0%’select [Store].[(All)].Members on COLUMNS, Generate( [Product].[Brand Name].Members, Union( TopCount( [Product].CurrentMember.Children, 2, [Unit Sales] ) * {[Unit Sales]}, { ([Product].CurrentMember, [PercTotalSales]) } ) ) on ROWSfrom Sales

Si se dan cuenta… la consulta no cumple con un Standar SQL, pero MDX cuenta con su propio standard, disponible en MSDN.

Asi como MDX tiene su propia especificacion, Mondrian, que llego algo tarde al mercado, debe soportar una serie de parametros… estos parametros son enviados, atravez de una consulta HTTP/GET, con una especie de cadena XML, y este a su vez, devuelve un archivo XML/A que significa XML for Analysis.

El parser, en si… no es codigo del otro  mundo… esta hecho para que funcionara tal cual el sistema del cliente… si alguien desea obtener una copia de trabajo, pueden ejecutar:

bzr branch lp:~santiago-ve/+junk/mondrianXmlaParser

Esto es una clase de PHP, util para extraer datos desde un proveedor XMLA, como lo puede ser Mondrian, o MSaS (Microsoft Analitycal Services), entre otros, inclusive otros menos conocidos y/o mas propietarios… en teoria… _todos_ deberian cumplir con la especificacion publicada en http://www.xmla.org. En el codigo se encuentra un simple ejemplo, bastante util para acceder a los datos desde PHP.

Se que se puede mejorar (ENORMEMENTE), si alguien quiere unirse, con gusto!, Si encuentran un bug… porfavor, reportenlo :D !

This is a PHP class that is usefull to fetch data from a mondrian XMLA provider. It is for accessing multidimensional data from a PHP application (Nice eh?…) the code isnt anything out of the world… it can be improved actually… but i’m sure it will work for most simple cases… (it only returns tabular data… and may be subject to several bugs…)

If anyone gives me the chance to try other XMLA providers (MS AS for example).,.. i guess i could give it a try… till then.. have fun… if you make any improvements… please let me know…

If you want to have a working copy, install bazaar… and paste the following line:

bzr branch lp:~santiago-ve/+junk/mondrianXmlaParser

The launchpad repository is here: https://code.launchpad.net/~santiago-ve/+junk/mondrianXmlaParser

Facebook Twitter Email

Tu dirección de correo no será publicada. Los campos obligatorios están marcados con *

*

Social links powered by Ecreative Internet Marketing