views:

177

answers:

3

I am looking for a way to connect to a MS Analysis Services OLAP cube, run MDX queries, and pull the results into Python. In other words, exactly what Excel does. Is there a solution in Python that would let me do that?

Someone with a similar question going pointed to Django's ORM. As much as I like the framework, this is not what I am looking for. I am also not looking for a way to pull rows and aggregate them -- that's what Analysis Services is for in the first place.

Ideas? Thanks.

+1  A: 

I am completely ignorant about Python, but if it can call DLLs then it ought to be able to use Microsoft's ADOMD object. This is the best option I can think of.

You could look at Office Web Components (OWC) as that has a OLAP control than can be embedded on a web page. I think you can pass MDX to it, but perhaps you want Python to see the results too, which I don't think it allows.

Otherwise perhaps you can build your own 'proxy' in another language. This program/webpage could accept MDX in, and return you XML showing the results. Python could then consume this XML.

Magnus Smith
For all I know it can call DLLs. The problem is that they are so poorly documented. Actually, the same applies to the client-OLAP server communication protocol. I would implement a client in Python myself (or try to) but I can't find anything anywhere. Any pointers?
kaloyan
Find a Python example that shows how to call a DLL. Then install MS SQL Server 'Client Components' on your dev machine, and try to change the Python example to call adomd.dll and use the Microsoft documentation to tell you what classes/objects/properties to use. In VBScript we would do Server.CreateObject("ADOMD.Cellset")
Magnus Smith
A: 

Have you ever figured out how to do this?

tom
Sorry, haven't found a solution yet.
kaloyan
A: 

Have you tried to wrap the adomd.dll? I was just about to give it a shot.

thomas