Фильтр нескольких условий MDX для нескольких измерений - PullRequest
0 голосов
/ 24 октября 2019

Я относительно новичок в MDX, около месяца или около того, и сейчас я пишу запросы MDX к удаленному кубу, над которым я также работаю (Java 8 ActivePivot).

Этот запрос работает, когда они OR. , но когда я добавляю круглые скобки и заменяю это первое ИЛИ на И, оно работает, вроде как, но отбрасывает меру, в результате чего размеры CDR и BOOK возвращаются правильно. Может кто-то с большим знанием MDX сказать мне, что я пропустил или еще не знаю?

WITH 
Member [Measures].[CDR_Label] AS [CDR].[CDR].CURRENTMEMBER.MEMBER_CAPTION  
Member [Measures].[Book_Label] AS [Book].[Book].CURRENTMEMBER.MEMBER_CAPTION 
SELECT 
  NON EMPTY 
  {[Measures].[CDR_Label],
  [Measures].[Book_Label],[Measures].[RepoRate.LATEST]} 
ON COLUMNS, 
NON EMPTY 
FILTER(
([CDR].CHILDREN,[Book].CHILDREN), (LEFT([CDR].[CDR].CURRENTMEMBER.MEMBER_CAPTION,1) = "8") AND 
(LEFT([Book].[Book].CURRENTMEMBER.MEMBER_CAPTION,2) = "ST" OR 
RIGHT([Book].[Book].CURRENTMEMBER.MEMBER_CAPTION,4) = "CIES")) 
ON ROWS 
FROM [TraderCube] 
WHERE ([Date].[Date].[2019-10-23])

enter image description here

И вот запрос, прежде чем я изменил его, с ИЛИ ИЛИ и т. Д., Который работает. Я хотел, чтобы вышеприведенный код возвращал только CDR, начинающийся с 8, что он и делает, но он теряет меру (а также ломает мои заголовки - так как на самом деле это происходит изнутри функции xll / custom Excel, в dll, вызывающую удаленныйкуб, использующий пакет AdomdClient, поскольку я создаю очень собственный плагин - по сути, возможность для пользователей использовать простые слова / из представленных перечислений, а затем я перевожу и конструирую MDX в C # для запуска в кубе. Данные возвращаются, и я отправляю двумерные массивы обратнов Excel :)).

WITH 
Member [Measures].[CDR_Label] AS [CDR].[CDR].CURRENTMEMBER.MEMBER_CAPTION  
Member [Measures].[Book_Label] AS [Book].[Book].CURRENTMEMBER.MEMBER_CAPTION SELECT NON EMPTY {[Measures].[CDR_Label],[Measures].[Book_Label],[Measures].[RepoRate.LATEST]} 
ON COLUMNS, 
NON EMPTY 
FILTER(
([CDR].CHILDREN,[Book].CHILDREN), 
LEFT([CDR].[CDR].CURRENTMEMBER.MEMBER_CAPTION,1) = "8" OR 
LEFT([Book].[Book].CURRENTMEMBER.MEMBER_CAPTION,2) = "ST" OR 
RIGHT([Book].[Book].CURRENTMEMBER.MEMBER_CAPTION,4) = "CIES") 
ON ROWS 
FROM [TraderCube] 
WHERE ([Date].[Date].[2019-10-23])

enter image description here

1 Ответ

0 голосов
/ 25 октября 2019

Ааа ... игнорируй меня!

Мне кажется, я устал и не видел узора. По сути, и я только что воспроизвел это, если вы спросите о двух шаблонах измерений, которые существуют с мерой, вы вернетесь к ожидаемым измерениям (в моем случае 3, реальная мера и две фальшивые метки / метки для измерений, чтобы привести их все)назад как строки).

Если совпадений нет, то, кажется, вернет вам то, что вы просили, без каких-либо мер, так как они не существуют для комбинации измерений.

...