2014-01-08 5 views
2

Я новичок в SSAS и MDX-скриптах в целом. Мой вопрос прост; возможно ли разбить строку в MDX? Причина этого в том, что я использую:MDX split string?

username() 

Эта функция возвращает домен \ имя_пользователя (Domain & Имя пользователя). Но я хочу использовать только имя_пользователя (таким образом, разбивая его на «\» - char каким-то образом), так как это то, что хранится в базе данных, и я хочу сделать сравнение.

Вызов пользователя() используется для создания другой строки:

StrToMember("{[User].[Username].&[" +username()+"]}") 

возможно ли это вообще? Есть идеи?

ответ

1

После некоторого поиска в Интернете я нашел решение на: http://social.msdn.microsoft.com/Forums/sqlserver/en-US/15f0a544-8d82-4926-ae5c-ce1f3f894deb/function-mdx-return-user-loged-username?forum=sqlanalysisservices

Раствор, выглядит следующим образом:

nonempty([Plant].[Plant Name].[Plant Name].members, 
([measures].[Plant Admin Count], 
    StrToMember("{[User].[Username].&[" + mid(username, instr(username, "\")+1) + "]}") 
)) 

И это, кажется, работает!

1

Как вы уже выяснили, Mid и Instr работают в MDX. На самом деле, MDX «заимствует» многие функции VBA, особенно для строковых манипуляций.

Существует список функций VBA, поддерживаемых MDX и DAX по адресу http://technet.microsoft.com/en-us/library/hh510163.aspx. В этом списке указано, что это для SQL Server 2012, но я бы предположил, что он корректен для SQL Server 2008 и 2008R2 на 99%.

+1

Я искал какой-то список с функциями строки MDX, но я не мог найти ничего полезного. Великолепно, чтобы иметь ссылку сейчас! – AfroMogli