我正在开发一个使用XMLA over HTTP调用来与SSAS 2016 Cube通信的Web客户端。
当我的客户的用户点击基于此多维数据集的数据透视网格中的单元格时,我想向他显示要执行的可用SSAS“操作”的列表。
为此,我的代码使用带有“MDSCHEMA_ACTIONS”请求类型的XMLA“DISCOVER”命令,同时限制特定的单元路径。
当我限制一个度量和一个维度属性成员时,我确实得到了结果(场景A) - 我得到一个行动,一个动作(“行动”)
但是,如果我添加另一个维度属性成员(场景B),我会得到空行集。
当然,我认为这是由于DBA为单元格配置了Actions的方式,但令我惊讶的是,当我使用MS Excel Pivot Table并查询完全相同单元格的操作时(场景B),我确实得到了同样的动作(如愿)。
我想利用您的经验找到一些线索,了解两个客户之间可能导致不同结果的原因,因为唯一明显的区别是添加第二维属性。
以下是两种情况的坐标:
场景A(返回一个动作):
(
[BusinessDate].[CURRENTWEEK].&[1],
[Measures].[Total Payment Amount]
)
场景B(无法返回操作):
(
[BusinessDate].[CURRENTWEEK].&[1],
[Owners].[Owner Id].&[34876],
[Measures].[Total Payment Amount]
)
这是BOTH Scenarios的XMLA包装器:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<Discover xmlns="urn:schemas-microsoft-com:xml-analysis" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<RequestType>MDSCHEMA_ACTIONS</RequestType>
<Restrictions>
<RestrictionList>
<CATALOG_NAME>my_catalog</CATALOG_NAME>
<CUBE_NAME>my_cube_name</CUBE_NAME>
<COORDINATE_TYPE>6</COORDINATE_TYPE>
<COORDINATE>COORDINATE-GOES-HERE</COORDINATE>
</RestrictionList>
</Restrictions>
<Properties>
<PropertyList>
<Format>Tabular</Format>
</PropertyList>
</Properties>
</Discover>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
感谢任何帮助!
PS我试图用wireshark嗅探Excel请求的样子,但它看起来像编码的ASCII,我无法理解。
PS2:也发布在dba.stackexchange中: https://dba.stackexchange.com/questions/183515