Более короткий способ указания набора в MDX - PullRequest
1 голос
/ 01 июня 2011

Есть ли более короткий способ задания набора в MDX?

Я знаю, что могу сделать что-то вроде:

{[Debtor].[TRADING DEBTOR CODE].&[AU-000013],[Debtor].[TRADING DEBTOR CODE].&[AU-000020]}

но как только вы наберете несколько участников, это станет невероятно многословным.

Я ищу что-то вроде

MagicFunctionToMakeASet([Debtor].[TRADING DEBTOR CODE],'AU-000013,AU-000015,AU-000013,AU-000015,...')

Ответы [ 2 ]

1 голос
/ 02 июня 2011

Они в последовательности вообще? Если это так, не могли бы вы сделать

{
      [Debtor].[TRADING DEBTOR CODE].&[AU-000013] : 
      [Debtor].[TRADING DEBTOR CODE].&[AU-000020]
}

Чтобы дать вам набор кодов от 13 до 20 включительно?

Если это не удастся, взгляните на InStr и посмотрите, может ли он помочь. Похоже, что он может - Или вы можете создать некоторые подмножества, используя его, а затем объединить в свой окончательный набор?

http://msdn.microsoft.com/en-us/library/ms145487.aspx

Из вышеприведенного MSDN:

WITH SET [ChardonnayChablis] AS
   'Filter([Product].Members, (InStr(1, [Product].CurrentMember.Name, "chardonnay") <> 0) OR (InStr(1, [Product].CurrentMember.Name, "chablis") <> 0))'

SELECT
   [ChardonnayChablis] ON COLUMNS,
   {Measures.[Unit Sales]} ON ROWS
FROM Sales
0 голосов
/ 02 июня 2011

Существуют различные сочетания клавиш.Если вы просто хотите, чтобы все «дети» определенного участника, использовали Descendants() или .children.Или получите всех участников на одном уровне с .members.Вы можете указать диапазон между двумя членами или использовать фильтр для соответствия каким-либо критериям.

Что вы искали?Я постараюсь привести более конкретный пример ...

...