{ "info": { "author": "Norman Kr\u00e4mer", "author_email": "kraemer.norman@googlemail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 2", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "olap.xmla\n=========\n\nThis package is meant for accessing xmla datasources - see\nhttp://en.wikipedia.org/wiki/XML\\_for\\_Analysis\n\nBuiling\n=======\n\nIn this directory, run:\n\n::\n\n python setup.py build\n\nTesting\n=======\n\nTests are done against the Mondrian, SSAS, icCube XMLA providers. The\ntestsDiscover module tests behavior with different XMLA providers with\nthe Discover command while testsExecute does the same with the Execute\ncommand. Note that you likely need to modify the sources if you want to\ntest yourself since they contain specifics (namely the location of the\nservices and names of the data sources).\n\nSample\n======\n\nHere is an example how to use it:\n\n::\n\n import olap.xmla.xmla as xmla\n\n p = xmla.XMLAProvider()\n # mondrian\n c = p.connect(location=\"http://localhost:8080/mondrian/xmla\")\n # to analysis services (if iis proxies requests at /olap/msmdpump.dll)\n # you will need a valid kerberos principal of course\n # c = p.connect(location=\"https://my-as-server/olap/msmdpump.dll\", \n # sslverify=\"/path/to/my/as-servers-ca-cert.pem\")\n # to icCube\n # c = p.connect(location=\"http://localhost:8282/icCube/xmla\", username=\"demo\", \n # password=\"demo\")\n\n # getting info about provided data\n print c.getDatasources()\n print c.getMDSchemaCubes()\n # for ssas a catalog is needed, so the call would be like\n # get a catalogname from a call to c.getDBSchemaCatalogs()\n # c.getMDSchemaCubes(properties={\"Catalog\":\"a catalogname\"})\n\n # execute a MDX (working against the foodmart sample catalog of mondrian)\n cmd= \"\"\"select {[Measures].ALLMEMBERS} * {[Time].[1997].[Q2].children} on columns, \n [Gender].[Gender].ALLMEMBERS on rows \n from [Sales]\n \"\"\"\n\n res = c.Execute(cmd, Catalog=\"FoodMart\")\n #return only the Value property from the cells\n res.getSlice(properties=\"Value\")\n # or two props\n res.getSlice(properties=[\"Value\", \"FmtValue\"]) \n\n # to return some subcube from the result you can\n # return all\n res.getSlice()\n # carve out the 4th column\n res.getSlice(Axis0=3) \n # same as above, SlicerAxis is ignored\n res.getSlice(Axis0=3, SlicerAxis=0) \n # return the data sliced at the 2nd and 3rd row\n res.getSlice(Axis1=[1,2]) \n # return the data sliced at the 2nd and 3rd row and at the 4th column\n res.getSlice(Axis0=3, Axis1=[1,2]) \n\nUsing the procedural interface:\n\n::\n\n import olap.xmla.xmla as xmla\n\n p = xmla.XMLAProvider()\n c = p.connect(location=\"http://localhost:8080/mondrian/xmla\")\n s = p.getOLAPSource()\n\n # import olap.interfaces as oi\n # oi.IOLAPSource.providedBy(s) == True\n\n s.getCatalogs()\n s.getCatalog(\"FoodMart\").getCubes()\n s.getCatalog(\"FoodMart\").getCube(\"HR\").getDimensions()\n s.getCatalog(\"FoodMart\").getCube(\"HR\").getDimension(\"[Department]\").\\\n getMembers()\n s.getCatalog(\"FoodMart\").getCube(\"HR\").getDimension(\"[Department]\").\\\n getMember(\"[Department].[14]\")\n\n cmd= \"\"\"select {[Measures].ALLMEMBERS} * {[Time].[1997].[Q2].children} on columns, \n [Gender].[Gender].ALLMEMBERS on rows \n from [Sales]\n \"\"\"\n res=s.getCatalog(\"FoodMart\").query(cmd)\n res.getSlice()\n\nNote\n----\n\nThe contained vs.wsdl originates from the following package:\nhttp://www.microsoft.com/en-us/download/confirmation.aspx?id=9388 and\nwas subsequently modified (which parameters go in the soap header) to\nwork with the suds package.olap.xmla\n\n\nCHANGES\n=======\n\n0.7.2\n-----\n* now relies on requests 1.2.3\n* fixed race condition in kerberos auth\n\n0.7.1\n-----\n* kerberos-auth was sent twice\n\n0.7\n---\n* works now with requests 0.14- and 1.-series of requests\n* selection of cell properties failed\n\n0.6\n----\n* dependency on kerberos and s4u2p is now optional\n* added optional kerberos-sspi package for kerberos on windows through sspi via pywin32\n\n0.5\n----\n* ``as_user`` and ``spn`` are no longer ignored in the kerberos authentication\n* implemented the procedural interface from olap.interfaces\n* fixed problem when no sliceraxis info is returned\n* parameter ``property`` of getSlice now spells ``properties``\n\n0.4\n----\n* keyword ``kerberos`` is gone. kerberos auth need is detected automatically\n* ``BeginSession`` and ``EndSession`` provide XMLA Sessionsupport\n* changes to work with icCube XMLA provider\n\n0.3\n----\n* changed keyword ``doKerberos`` in XMLProvider.connect to ``kerberos``\n* added ``sslverify`` keyword to XMLProvider.connect defaulting to ``True``.\n This will be handed to requests get method, so you can point it to your certificate bundle file.\n\n\n0.2\n----\n* removed dependencies on specific versions in setup.py", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/may-day/olap", "keywords": null, "license": "Apache Software License 2.0", "maintainer": null, "maintainer_email": null, "name": "xmla", "package_url": "https://pypi.org/project/xmla/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/xmla/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/may-day/olap" }, "release_url": "https://pypi.org/project/xmla/0.7.2/", "requires_dist": null, "requires_python": null, "summary": "Access olap data sources through xmla", "version": "0.7.2" }, "last_serial": 837784, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "01889577ec32e5fa756d9c199f6d61a4", "sha256": "7a5f50aa2b4a6f1bd893c7d342c5406a130ed9c07045c2ae974b1459693db7a6" }, "downloads": -1, "filename": "xmla-0.1.tar.gz", "has_sig": false, "md5_digest": "01889577ec32e5fa756d9c199f6d61a4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13284, "upload_time": "2012-05-27T02:02:41", "url": "https://files.pythonhosted.org/packages/f7/f2/20e059a53d6369325cdabec2a58e21fc6401fd7c27918ea9cf7e13961e76/xmla-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "9cca231fa0dea5514bd23ba036df570d", "sha256": "feebb008c95e0d049abc16984af1b83887bc90dd49c5f7907e3f2eb8189d992e" }, "downloads": -1, "filename": "xmla-0.2.tar.gz", "has_sig": false, "md5_digest": "9cca231fa0dea5514bd23ba036df570d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13257, "upload_time": "2012-05-29T14:56:34", "url": "https://files.pythonhosted.org/packages/4d/2e/2348ae7253c929bd923b046cf14bb9945e925dfd44ef180bfbc1356d029e/xmla-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "7f0e7dba7e563427bc4707419212b3a7", "sha256": "dcfc788ddfaf90371228b81f6bbef5a98bb5c86a2947c1b7b2c559cedd803c7e" }, "downloads": -1, "filename": "xmla-0.3.tar.gz", "has_sig": false, "md5_digest": "7f0e7dba7e563427bc4707419212b3a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13361, "upload_time": "2012-06-03T17:46:24", "url": "https://files.pythonhosted.org/packages/dc/15/1a85af5e66013f2d68689fe474e9183dd975b22ef47a194492975244040c/xmla-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "7b5a99dfdcfc30b629d8ea764a22fb6b", "sha256": "a2e50db1c8da005cf6e73ace0c179d414459863e16ce6000376cd7a031db05d4" }, "downloads": -1, "filename": "xmla-0.4.tar.gz", "has_sig": false, "md5_digest": "7b5a99dfdcfc30b629d8ea764a22fb6b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14493, "upload_time": "2012-06-18T00:46:43", "url": "https://files.pythonhosted.org/packages/c5/de/8baed49935e0613e5b25a7b7fda7798b226ba1a0027fabf6f84bd1d559f9/xmla-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "3c9ba5ae92e534850ca9cd6e65d4cea5", "sha256": "fff064a19ddc95b2364b9a29bf68c1e05e2da5f78bc519413daebd31e22df7b4" }, "downloads": -1, "filename": "xmla-0.5.tar.gz", "has_sig": false, "md5_digest": "3c9ba5ae92e534850ca9cd6e65d4cea5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19248, "upload_time": "2012-11-16T15:08:37", "url": "https://files.pythonhosted.org/packages/c2/a7/460bd2d1a37ff28d9e9e2b2a7c0cdbb9e05d218e735aec0d61bdc46cd15a/xmla-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "d825439f02c8916daee8f40f78d8f70a", "sha256": "7f50651997f2f49b5c639d6566fccbdc2e29709ba4a672094928040f483279e9" }, "downloads": -1, "filename": "xmla-0.6.tar.gz", "has_sig": false, "md5_digest": "d825439f02c8916daee8f40f78d8f70a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16749, "upload_time": "2012-12-11T21:36:31", "url": "https://files.pythonhosted.org/packages/7c/65/050fe79bf230e7150d624616f320bab7cec274ce5a360c04ff63a47c35ac/xmla-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "7019cfb173cbd01fcf238135294c3cdf", "sha256": "252959d5dd7924dfbb3e0b8dfafd72207b51c49f17ab1ac0779891106a3c214e" }, "downloads": -1, "filename": "xmla-0.7.tar.gz", "has_sig": false, "md5_digest": "7019cfb173cbd01fcf238135294c3cdf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17222, "upload_time": "2013-01-20T21:24:02", "url": "https://files.pythonhosted.org/packages/88/63/58b2e4fc5f1cfd2f509b799c7c3c029136656faea7930cf9e9e52747e6c4/xmla-0.7.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "74f911a520a1afa4f58f2594edfac07d", "sha256": "3a362e748ec12b14de728625ea71decddad4d4678438db183f21749ef337e0a9" }, "downloads": -1, "filename": "xmla-0.7.1.tar.gz", "has_sig": false, "md5_digest": "74f911a520a1afa4f58f2594edfac07d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17252, "upload_time": "2013-01-20T22:26:19", "url": "https://files.pythonhosted.org/packages/4d/30/a7e7a864c43282c1abd974f10455d0fa370e4cdb6975d94ceaa5148ed626/xmla-0.7.1.tar.gz" } ], "0.7.2": [ { "comment_text": "", "digests": { "md5": "1714e2f508556ce4e0dee3684eb7428c", "sha256": "65231acceed17651f15805977d24d2d177e897a094875f43be044b738bd31444" }, "downloads": -1, "filename": "xmla-0.7.2.tar.gz", "has_sig": false, "md5_digest": "1714e2f508556ce4e0dee3684eb7428c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18476, "upload_time": "2013-08-11T21:11:47", "url": "https://files.pythonhosted.org/packages/2e/bc/34ba1b585057b316c5029a7e310fd172d6138ae95453c755f01ce6ee7471/xmla-0.7.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1714e2f508556ce4e0dee3684eb7428c", "sha256": "65231acceed17651f15805977d24d2d177e897a094875f43be044b738bd31444" }, "downloads": -1, "filename": "xmla-0.7.2.tar.gz", "has_sig": false, "md5_digest": "1714e2f508556ce4e0dee3684eb7428c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18476, "upload_time": "2013-08-11T21:11:47", "url": "https://files.pythonhosted.org/packages/2e/bc/34ba1b585057b316c5029a7e310fd172d6138ae95453c755f01ce6ee7471/xmla-0.7.2.tar.gz" } ] }