我有一个MDX查询:
WITH
MEMBER [CLIENT].[WITHOUT CLIENT X] AS
'[CLIENT].[All CLIENTs] - [CLIENT].[CLIENT X]'
SELECT
[Measures].[Sales] ON COLUMNS
,{[STORE].[All STOREs].Children} ON ROWS
FROM [Sales]
WHERE
CrossJoin
(
{[YEAR].[2015]}
,{[CLIENT].[WITHOUT CLIENT X]}
);此查询返回corect结果(没有CLIENT.CLIENT X的所有商店销售)。
现在,我想使用这个计算成员(CLIENT.WITHOUT CLIENT X)在Saiku、OpenI、BTable或Pivot4J中作为正常维度或类似的东西。
为此,我在schema.xml中添加了:
<CalculatedMember name="WITHOUT CLIENT X"
formula="([CLIENT].[All CLIENTs] - [CLIENT].[CLIENT X])" hierarchy="CLIENT" parent="CLIENT" visible="true"></CalculatedMember>如果我跑:
Select [Measures].[Sales] on COLUMNS,
{[STORE].[All STOREs].Children} ON ROWS
from [Sales]
WHERE CrossJoin({[YEAR].[2015]}, {[CLIENT].[WITHOUT CLIENT X]})返回的结果是corect,但我看不到这个维度的CLIENT.WITHOUT客户端X。
在Saiku,OpenI或Pivot4J,我找不到这个维度。由于CDA (/api/olap/getCubeStructure),BTable在度量时获得了这个维度,结果如下:
{
"type": "measure",
"name": "WITHOUT CLIENT X",
"caption": "WITHOUT CLIENT X]",
"qualifiedName": "[CLIENT].[CLIENT X]",
"memberType": "FORMULA"
}但没用因为我不能用在过滤器里。
你有同样的答案吗?
有意义的问题:
因为维度客户端是巨大的(超过50000)查询,成员在1秒内运行,设置超过5分钟
和1一样。
因为最后的报告是非科技的,他们想要改变这个过滤器。
更新信息
我用CLIENT.WITHOUT_this_CLIENT客户端X重新命名了CLIENT.WITHOUT,用*CLIENT.CLIENT X*重命名了CLIENT.My特殊客户端,以避免混淆。
我想以这种方式过滤一个级别:添加除一个(CLIENT X)之外的所有成员(客户端)。
当我使用mdx查询时返回的结果是corect,因为GUI OLAP客户端不能读取我的xml。
我不知道我的错误在哪里。
谢谢你,Geo
解决了
对于我想要的(从一个大列表中过滤一个元素),答案是:
我创建了另一个维度,它只用于过滤器。
<Dimension type="StandardDimension" visible="true" highCardinality="false" name="CLIENT X">
<Hierarchy visible="true" hasAll="true">
<Table name="SALES" schema="SALES" />
<Level name="CLIENT X" visible="true" column="CLIENT" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
<KeyExpression>
<SQL dialect="oracle">
<![CDATA[CASE WHEN CLIENT = 'CLIENT X' THEN 'CLIENT X' ELSE 'WITHOUT CLIENT X' END]]>
</SQL>
</KeyExpression>
</Level>
</Hierarchy>
</Dimension>发布于 2015-03-11 13:38:52
你没有正确定义你的会员。即。父成员必须是新创建成员的父成员的完全限定名,而不是级别的名称。仔细阅读这,你会明白的。
https://stackoverflow.com/questions/28973954
复制相似问题