如何使用python运行xmla查询
我的要求是使用python连接到AnalysisServices服务器,运行xmla查询,例如如何使用python运行xmla查询,python,xml,xmla,Python,Xml,Xmla,我的要求是使用python连接到AnalysisServices服务器,运行xmla查询,例如 <Discover xmlns='urn:schemas-microsoft-com:xml-analysis'> <RequestType>MDSCHEMA_CUBES</RequestType> <Restrictions/> <Properties> <PropertyList>
<Discover xmlns='urn:schemas-microsoft-com:xml-analysis'>
<RequestType>MDSCHEMA_CUBES</RequestType>
<Restrictions/>
<Properties>
<PropertyList>
<Catalog>Q2C Analysis</Catalog>
</PropertyList>
</Properties>
</Discover>
MDU多维数据集
Q2C分析
得到结果,结果将是
<return xmlns="urn:schemas-microsoft-com:xml-analysis">
<root xmlns="urn:schemas-microsoft-com:xml-analysis:rowset" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msxmla="http://schemas.microsoft.com/analysisservices/2003/xmla">
<xsd:schema targetNamespace="urn:schemas-microsoft-com:xml-analysis:rowset" xmlns:sql="urn:schemas-microsoft-com:xml-sql" elementFormDefault="qualified">
<xsd:element name="root">
<xsd:complexType>
<xsd:sequence minOccurs="0" maxOccurs="unbounded">
<xsd:element name="row" type="row" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="uuid">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9a-zA-Z]{8}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{12}" />
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="xmlDocument">
<xsd:sequence>
<xsd:any />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="row">
<xsd:sequence>
<xsd:element sql:field="CATALOG_NAME" name="CATALOG_NAME" type="xsd:string" />
<xsd:element sql:field="SCHEMA_NAME" name="SCHEMA_NAME" type="xsd:string" minOccurs="0" />
<xsd:element sql:field="CUBE_NAME" name="CUBE_NAME" type="xsd:string" minOccurs="0" />
<xsd:element sql:field="CUBE_TYPE" name="CUBE_TYPE" type="xsd:string" minOccurs="0" />
<xsd:element sql:field="CUBE_GUID" name="CUBE_GUID" type="uuid" minOccurs="0" />
<xsd:element sql:field="CREATED_ON" name="CREATED_ON" type="xsd:dateTime" minOccurs="0" />
<xsd:element sql:field="LAST_SCHEMA_UPDATE" name="LAST_SCHEMA_UPDATE" type="xsd:dateTime" minOccurs="0" />
<xsd:element sql:field="SCHEMA_UPDATED_BY" name="SCHEMA_UPDATED_BY" type="xsd:string" minOccurs="0" />
<xsd:element sql:field="LAST_DATA_UPDATE" name="LAST_DATA_UPDATE" type="xsd:dateTime" minOccurs="0" />
<xsd:element sql:field="DATA_UPDATED_BY" name="DATA_UPDATED_BY" type="xsd:string" minOccurs="0" />
<xsd:element sql:field="DESCRIPTION" name="DESCRIPTION" type="xsd:string" minOccurs="0" />
<xsd:element sql:field="IS_DRILLTHROUGH_ENABLED" name="IS_DRILLTHROUGH_ENABLED" type="xsd:boolean" minOccurs="0" />
<xsd:element sql:field="IS_LINKABLE" name="IS_LINKABLE" type="xsd:boolean" minOccurs="0" />
<xsd:element sql:field="IS_WRITE_ENABLED" name="IS_WRITE_ENABLED" type="xsd:boolean" minOccurs="0" />
<xsd:element sql:field="IS_SQL_ENABLED" name="IS_SQL_ENABLED" type="xsd:boolean" minOccurs="0" />
<xsd:element sql:field="CUBE_CAPTION" name="CUBE_CAPTION" type="xsd:string" minOccurs="0" />
<xsd:element sql:field="BASE_CUBE_NAME" name="BASE_CUBE_NAME" type="xsd:string" minOccurs="0" />
<xsd:element sql:field="CUBE_SOURCE" name="CUBE_SOURCE" type="xsd:unsignedShort" minOccurs="0" />
<xsd:element sql:field="PREFERRED_QUERY_PATTERNS" name="PREFERRED_QUERY_PATTERNS" type="xsd:unsignedShort" minOccurs="0" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
<row>
<CATALOG_NAME>Q2C Analysis</CATALOG_NAME>
<CUBE_NAME>Q2C Thor</CUBE_NAME>
<CUBE_TYPE>CUBE</CUBE_TYPE>
<LAST_SCHEMA_UPDATE>2020-11-20T07:07:10.88</LAST_SCHEMA_UPDATE>
<LAST_DATA_UPDATE>2020-11-20T07:14:47.023333</LAST_DATA_UPDATE>
<DESCRIPTION />
<IS_DRILLTHROUGH_ENABLED>true</IS_DRILLTHROUGH_ENABLED>
<IS_LINKABLE>false</IS_LINKABLE>
<IS_WRITE_ENABLED>false</IS_WRITE_ENABLED>
<IS_SQL_ENABLED>false</IS_SQL_ENABLED>
<CUBE_CAPTION>Q2C Thor</CUBE_CAPTION>
<CUBE_SOURCE>1</CUBE_SOURCE>
<PREFERRED_QUERY_PATTERNS>1</PREFERRED_QUERY_PATTERNS>
</row>
</root>
</return>
Q2C分析
Q2C雷神
立方体
2020-11-20T07:07:10.88
2020-11-20T07:14:47.023333
真的
假的
假的
假的
Q2C雷神
1.
1.
然后从相关标记元素中提取所需的值
有没有办法做到这一点?提前感谢。所以我终于找到了解决这个问题的方法,而且非常简单(至少对我来说是这样) 首先安装adodbapi和pyodbc 其次,为Olap指定连接字符串-您可以找到正确的connectionstring模式 第三,定义需要在AnalysisServices服务器上运行的DMV查询
第四,获取结果并将其解析为一个列表,以便插入SQL数据或所需的输出。我了解到我可以使用olapy模块,但文档中非常详细地介绍了如何连接到AS服务器并运行查询。我确实设法实例化了一个MDXEngine,但它似乎期望的是MDX查询,而不是xmla查询(事后看来,在olapy模块中,它确实说是MDXEngine),所以可能是我的疏忽。这似乎是一个不完整的答案。问题的标题是“如何使用python运行xmla查询”,标记为“python”。但问题或答案中没有一行Python代码。