2012-04-26 5 views
1

Я все еще новичок в MDX, поэтому я не уверен, есть ли простой способ или не очень простой способ делать то, что я прошу, но вот смутное описание того, что я пытаюсь сделать для моего запроса MDX. У меня есть два набора, оба напрямую не связаны между собой в одной иерархии или кузенах, хотя может быть и «семейный» звонок, о котором я не знаю, что будет делать то, что я пытаюсь сделать.Фильтрация набора MDX на основе другого имени набора

[Company].[Parent Company].[Parent Company] получает набор всех членов компаний, которые являются родителями компании во втором сетевом наборе.

[Company].[Company].[Company] получает набор всех членов самих компаний, включая самих родителей.

Я пытаюсь отфильтровать [C].[C].[C] набор для НЕ включают в себя какие-либо экземпляры [Parent Company] в ЧЛЕНА для моего MDX запроса. Я попробовал некоторые странные вещи с помощью Filter(), но продолжал испортить наборы/кортежи или получать неверные данные.
На эти комплекты нет никакого баснословного/многопользовательского обмана, есть только два уровня, о которых можно беспокоиться (компании и их потенциальные родители, их может не быть). Если бы куб был отформатирован лучше, было бы неплохо, если бы они были в иерархии, но здесь это не так.

Пример вывода:

  • Члены [Company].[Parent Company].[ParentCompany] = {А, С, Е}
  • Члены [Company].[Company].[Company] = {А, В, С, D, Е, F, G}

Затем я хочу получить набор, который будет возвращать следующее: {B, D, F, G} и все.

Любая помощь будет оценена!

+0

Вы можете перечислить некоторые примеры данные, показывающие, желаемый результат и то, что вы хотите исключить? – Rick

+0

Просто отредактировал вопрос, чтобы включить теоретические наборы и желаемый результат. Благодаря! –

+0

Это будет довольно сложно, большинство обычных функций MDX не работают с ярлыками строк, а против уникальных имен, и в этом случае они будут отличаться, поскольку они поступают из разных иерархий. Можете ли вы создать реальную иерархию родителя/ребенка в своем измерении? Если это так, было бы легко отфильтровать родителей. – Rick

ответ

1

Вы можете сделать это без использования member_name:

Exclude([Company].[Company].[Company].Members, Extract([Company].[Company].[Company].Members * [Company].[Parent Company].[Parent Company].Members, [Company].[Company])) 

или

Exclude([Company].[Company].[Company].Members, Exists([Company].[Company].[Company].Members, [Company].[Parent Company].[Parent Company].Members))