我有这个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]}
);
此查询返回核心结果(所有商店销售没有 [客户]] [客户X] 。
现在,我想在Saiku,OpenI,BTable或Pivot4J中使用此计算成员( [CLIENT]。[WITHOUT CLIENT X] )作为正常维度或类似的东西。
为此我在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,但我看不到这个维度[客户端]。[没有客户端X]。
在Saiku,OpenI或Pivot4J,我无法找到这个维度。 由于CDA(/ api / olap / getCubeStructure),BTable将此维度设为 MEASURES ,结果为:
{
"type": "measure",
"name": "WITHOUT CLIENT X",
"caption": "WITHOUT CLIENT X]",
"qualifiedName": "[CLIENT].[CLIENT X]",
"memberType": "FORMULA"
}
但没用,因为我无法在过滤器中使用。
你有相同的答案吗?
提出问题:
因为维度CLIENT它的巨大(超过50000)查询成员在1秒内运行并且设置超过5分钟
与1相同。
因为最终报告是针对非tehnic的,他们想要更改此过滤器。
更新信息
我将 [CLIENT]。[WITHOUT_this_CLIENT] 重命名为 [CLIENT]。[WITHOUT CLIENT X] 和 [CLIENT]。[我的特殊客户] < / em> with * [CLIENT]。[CLIENT X] *以避免一些混淆。
我想以这种方式过滤一个级别:添加除一个( CLIENT X )之外的所有成员(CLIENT)。
当我使用mdx查询时,返回的结果是corect ,因为GUI OLAP客户端无法读取我的xml架构。
我不知道我的错误在哪里。
谢谢你, 地理位置
解决
对于我想要的东西(从大列表中过滤掉一个元素),答案是这样的:
我创建了另一个维度,仅用于过滤。
<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>