Как я могу использовать оператор IN или его эквивалент в запросе SSAS MDX?

Я хочу использовать оператор IN, как в SQL.

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);

как я могу добиться этого в запросе MDX?

for eg. [Customer ID] IN (1,2,3,4,5)

Здесь я не хочу использовать предложение where, поскольку та же иерархия, что и в предложении where, не может быть выбрана на оси. Есть ли способ использовать оператор IN без предложения where?

Я слышал, что именованные наборы можно использовать с оператором IN в запросе mdx, но я хочу использовать статический список значений для использования с оператором IN. Возможно ли это?


person gbc    schedule 22.11.2017    source источник
comment
@MitchWheat Я не думаю, что это дубликат упомянутого вопроса, потому что gbc прямо говорит, что им не нужна функциональность IN в предложении WHERE.   -  person jhenninger    schedule 23.11.2017


Ответы (2)


Другой вариант, кроме ответа Данила Коростиля, заключается в использовании подзапроса:

SELECT 
    [Customer].[Customer ID].MEMBERS ON 0
FROM (
    SELECT 
        {([Customer].[Customer ID].[1]),
         ([Customer].[Customer ID].[2]),
         ([Customer].[Customer ID].[3]),
         ([Customer].[Customer ID].[4]),
         ([Customer].[Customer ID].[5])} ON 0
    FROM
        [Your Cube]
)

Использование подзапроса (или вложенных подзапросов) работало для меня лучше, чем ограничение членов в предложении SELECT, когда я также использовал функции SUBSET или ORDER.

person jhenninger    schedule 22.11.2017

Что не так со следующим MDX:

select 
  {[Customer].[Customer ID].[1]
  ,[Customer].[Customer ID].[2]
  ,[Customer].[Customer ID].[3]
  ,[Customer].[Customer ID].[4]
  ,[Customer].[Customer ID].[5]} on 0
from YourCube;
person Danylo Korostil    schedule 22.11.2017