Как я могу использовать CalculatedMember (размер, а не меру) в XML-схеме Pentaho?

У меня есть этот 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]}
  );

Этот запрос возвращает правильный результат (продажи всех магазинов без [CLIENT].[CLIENT X]).

Теперь я хочу использовать этот вычисляемый элемент ([КЛИЕНТ].[БЕЗ КЛИЕНТА 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]})

возвращенный результат правильный, но я не вижу этого измерения [КЛИЕНТ].[БЕЗ КЛИЕНТА X].

В Saiku, OpenI или Pivot4J я не могу найти это измерение. BTable получает это измерение как MEASURES из-за CDA (/api/olap/getCubeStructure), и результат такой:

 {
    "type": "measure",
    "name": "WITHOUT CLIENT X",
    "caption": "WITHOUT CLIENT X]",
    "qualifiedName": "[CLIENT].[CLIENT X]",
    "memberType": "FORMULA"
  }

но бесполезно, потому что я не могу использовать в фильтре.

У вас такие же ответы?

Возможные вопросы:

  1. Почему вы используете член, а не именованный набор?

Из-за измерения CLIENT это огромный (более 50000) запрос с элементом, который выполняется за 1 секунду, а с набором - более 5 минут.

  1. почему бы не использовать КРОМЕ?

То же, что 1.

  1. почему бы не использовать только запрос mdx?

Потому что окончательный отчет не для технических специалистов, и они хотят изменить этот фильтр.

ОБНОВИТЬ ИНФОРМАЦИЮ

Я переименовал [КЛИЕНТ].[БЕЗ этого_КЛИЕНТА] в [КЛИЕНТ].[БЕЗ КЛИЕНТА X] и [КЛИЕНТ].[Мой специальный клиент] с *[КЛИЕНТ].[КЛИЕНТ X]*, чтобы избежать путаницы.

Я хочу отфильтровать уровень следующим образом: добавить всех участников (КЛИЕНТ), кроме одного (КЛИЕНТ X).

Возвращенный результат правильный, когда я использую запрос mdx, потому что клиенты GUI OLAP не могут прочитать мою схему xml.

I don't know where is my error.

Спасибо, Гео.

РЕШЕНО

Для того, что я хочу (фильтрация одного элемента из большого списка), ответ таков:

Я создал еще одно измерение, которое используется только для фильтра.

    <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>

person DGA    schedule 10.03.2015    source источник
comment
the result returned is corect, but i can't see this dimension [CLIENT].[WITHOUT_this_CLIENT] - Можете ли вы отредактировать свой ответ с выводом и сообщить нам, что вы имеете в виду? Кроме того, каковы ваши настоящие намерения?   -  person SouravA    schedule 16.03.2015


Ответы (1)


Вы неправильно определяете свой член. т.е. Родительский элемент должен быть полным именем родителя вновь созданного элемента, а не именем уровня. Внимательно прочтите это, и вы все поймете.

person Luc    schedule 11.03.2015
comment
я уже читал это, но я действительно не понимаю. У меня есть MEMBER [CLIENT].[WITHOUT_this_CLIENT] AS '[CLIENT].[All CLIENTs] - [CLIENT].[My Special Client]', и я хочу преобразовать в схему: <CalculatedMember name="WITHOUT_this_CLIENT" formula="([CLIENT].[All CLIENTs] - [CLIENT].[My Special Client])" hierarchy="CLIENT" parent="CLIENT" visible="true"></CalculatedMember> - person DGA; 13.03.2015