首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何使用CalculatedMember (维度,而不是度量)在五旬节xml模式中?

我如何使用CalculatedMember (维度,而不是度量)在五旬节xml模式中?
EN

Stack Overflow用户
提问于 2015-03-10 20:57:15
回答 1查看 1.7K关注 0票数 0

我有一个MDX查询:

代码语言:javascript
复制
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中添加了:

代码语言:javascript
复制
<CalculatedMember name="WITHOUT CLIENT X" 
 formula="([CLIENT].[All CLIENTs] - [CLIENT].[CLIENT X])" hierarchy="CLIENT" parent="CLIENT" visible="true"></CalculatedMember>

如果我跑:

代码语言:javascript
复制
 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在度量时获得了这个维度,结果如下:

代码语言:javascript
复制
 {
    "type": "measure",
    "name": "WITHOUT CLIENT X",
    "caption": "WITHOUT CLIENT X]",
    "qualifiedName": "[CLIENT].[CLIENT X]",
    "memberType": "FORMULA"
  }

但没用因为我不能用在过滤器里。

你有同样的答案吗?

有意义的问题:

  1. 为什么你使用成员而不是命名集?

因为维度客户端是巨大的(超过50000)查询,成员在1秒内运行,设置超过5分钟

  1. 为什么不使用,除了?

和1一样。

  1. 为什么不只使用mdx查询呢?

因为最后的报告是非科技的,他们想要改变这个过滤器。

更新信息

我用CLIENT.WITHOUT_this_CLIENT客户端X重新命名了CLIENT.WITHOUT,用*CLIENT.CLIENT X*重命名了CLIENT.My特殊客户端,以避免混淆。

我想以这种方式过滤一个级别:添加除一个(CLIENT X)之外的所有成员(客户端)。

当我使用mdx查询时返回的结果是corect,因为GUI OLAP客户端不能读取我的xml。

我不知道我的错误在哪里。

谢谢你,Geo

解决了

对于我想要的(从一个大列表中过滤一个元素),答案是:

我创建了另一个维度,它只用于过滤器。

代码语言:javascript
复制
    <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>
EN

回答 1

Stack Overflow用户

发布于 2015-03-11 13:38:52

你没有正确定义你的会员。即。父成员必须是新创建成员的父成员的完全限定名,而不是级别的名称。仔细阅读,你会明白的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28973954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档