powered by simpleCommunicator - 2.0.44     © 2025 Programmizd 02
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Как узнать какой член измерения выбран первым?
7 сообщений из 7, страница 1 из 1
Как узнать какой член измерения выбран первым?
    #32092300
GoodLeo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Товарищи, если кто знает - подскажите пожалуйста.
Есть измерение, которое в кубе будет играть роль, можно сказать фильтра.
Т.е. пользователь, в OLAP клиенте (Excel) выбирает одно из значений в этом измерении, и по данному значению производится действие.
Например:
Измерение "К":
К
|. Name
|..Value

Пользователь выбирает в поле - фильтре член измерения "К", и далее на значение Value этого члена умножаются значения [measure].[Sale].
Как должен выглядеть запрос вычисляемого поля, содержащего результат умножения?
Я так понимаю необходима какая - то функция, определяющая, какой элементы выбран в измерении "К". Может кто подскажет что это за функция?
Есть тут ещё одно "но". В Excel можно выбрать несколько членов измерения, поэтому ф-ия наверное должна определять первый из них.

Заранее всем ответившим спасибо!
...
Рейтинг: 0 / 0
Как узнать какой член измерения выбран первым?
    #32092516
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То, что выбрал клиент, знает только клиент и должно определяться средствами клиента. На мой взгляд, Вы можете
а) перехватить и проанализировать MDX, который формирует клиент при выборе фильтра. В случае Excel, например, ActiveSheet.PivotTables("PivotTable1").mdx:

SELECT NON EMPTY HIERARCHIZE(AddCalculatedMembers({DrillDownLevel({[Store].[All Stores]})})) DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON COLUMNS , NON EMPTY HIERARCHIZE(AddCalculatedMembers({DrillDownLevel({[Customers].[All Customers]})})) DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON ROWS FROM [Sales] WHERE ([Measures].[Store Sales], [Time].[1998].[Q1]. ) для одиночного фильтра и

WITH MEMBER [Time].[XL_QZX] AS ' Aggregate ( { [Time].[1998].[Q1]. , [Time].[1998].[Q1]. } ) ' SELECT NON EMPTY HIERARCHIZE(AddCalculatedMembers({DrillDownLevel({[Store].[All Stores]})})) DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON COLUMNS , NON EMPTY HIERARCHIZE(AddCalculatedMembers({DrillDownLevel({[Customers].[All Customers]})})) DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON ROWS FROM [Sales] WHERE ([Measures].[Store Sales], [Time].[XL_QZX]) для множественного

б) посмотреть, что сидит в поле фильтра на клиенте. В случае Excel, например, пройдитесь по коллекции ActiveSheet.PivotTables("PivotTable1").PageFields, для каждого проверьте св-во CubeField.EnableMultiplePageItems, если True, то смотрите св-во CurrentPageList, иначе CurrentPageName.
...
Рейтинг: 0 / 0
Как узнать какой член измерения выбран первым?
    #32092519
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, Саша, что за фигня?

То, что выбрал клиент, знает только клиент и должно определяться средствами клиента. На мой взгляд, Вы можете
а) перехватить и проанализировать MDX, который формирует клиент при выборе фильтра. В случае Excel, например, ActiveSheet.PivotTables("PivotTable1").mdx:

Код: plaintext
SELECT NON EMPTY HIERARCHIZE(AddCalculatedMembers({DrillDownLevel({[Store].[All Stores]})})) DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON COLUMNS , NON EMPTY HIERARCHIZE(AddCalculatedMembers({DrillDownLevel({[Customers].[All Customers]})})) DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON ROWS FROM [Sales] WHERE ([Measures].[Store Sales], [Time].[ [b]1998 ].[Q1].[ 1 ][/b])
для одиночного фильтра и

Код: plaintext
WITH MEMBER [Time].[XL_QZX] AS 'Aggregate ( { [Time].[1998].[Q1].[1] , [Time].[1998].[Q1].[2] } )' SELECT NON EMPTY HIERARCHIZE(AddCalculatedMembers({DrillDownLevel({[Store].[All Stores]})})) DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON COLUMNS , NON EMPTY HIERARCHIZE(AddCalculatedMembers({DrillDownLevel({[Customers].[All Customers]})})) DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON ROWS FROM [Sales] WHERE ([Measures].[Store Sales], [Time].[XL_QZX])
для множественного

б) посмотреть, что сидит в поле фильтра на клиенте. В случае Excel, например, пройдитесь по коллекции ActiveSheet.PivotTables("PivotTable1").PageFields, для каждого проверьте св-во CubeField.EnableMultiplePageItems, если True, то смотрите св-во CurrentPageList, иначе CurrentPageName.
...
Рейтинг: 0 / 0
Как узнать какой член измерения выбран первым?
    #32092532
GoodLeo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Дед Мазай!\r
Просто я хотел максимально сделать всё на уровне Analysis Service, не привязываясь к конкретному клиенту, так как он может поменяться.\r
А можно ли как нибудь так.\r
Элемент, который выбран в фильтре, я впринципе могу определить выражением типа\r
[К].CurrentMember\r
И фиг с ним, что пользователь выбрал несколько элементов - это его проблема, пусть в этом случае не работает.\r
Но, (извиняюсь за тупость) я что то не понимаю как добраться до уровня Value уже известного члена.\r
Выражение типа [K]. CurrentMember.[Value] не проходит (пользователь выбирает в поле фильтра именно наименование единицы, а не само Value). Что то я тут туплю.\r
И на самом деле задача у меня посложнее. Я всё пытаюсь решить проблему описанною мной в /topic/18713.\r
В том случае пользователь выбирает наименование единицы измерение в измерении "ЕдиницыИзмерения".\r
Я так думал что по известному выбранному члену ([ЕдиницыИзмерения].currentnumber) я смогу каким нибудь образом помножить члены меры с данными о продаже на соответсвующие коэффициенты в измерении "КоэффициекнтыПересчётаЕдиниц" (они связаны с "ЕдиницыИзмерения" по Id единицы.\r
Но встаёт вопрос, как помножить данные о продажах на нужные коэффициенты?\r
Скажите хотя бы как добраться до Value измерения "К" :)
...
Рейтинг: 0 / 0
Как узнать какой член измерения выбран первым?
    #32092548
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что есть Value? И во-вторых. Меня зовут Маздай. Вы что все, сговорились?
...
Рейтинг: 0 / 0
Как узнать какой член измерения выбран первым?
    #32093088
GoodLeo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сорри! Маздай, так Маздай! :)
Value есть в моём примере:
.....
Измерение "К":
К
|. Name
|..Value

.....
...
Рейтинг: 0 / 0
Как узнать какой член измерения выбран первым?
    #32093177
GoodLeo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Усё! Всем спасибо! Разобрался (в навигации по иерархиям)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Как узнать какой член измерения выбран первым?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]