powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Убрать Exception cannot find dimension member
15 сообщений из 15, страница 1 из 1
Убрать Exception cannot find dimension member
    #32829302
McLuad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Представим что есть dimension Profiles. У него есть level profile_id.
Допустим что в текущем состоянии dimension содержит следующие profile_id (3,4,5)
В случае, когда я пытаюсь обратиться к значению 10 то соответсвенно выдет ошибку cannot find dimension member и это правильно.

Но скажем так, я не всегда знаю точно какие именно id есть в текущем dimension. В MDX запрос вполне может попасть левые значения. Допустим в where я говорю покажи мне 3, 4, 11.
Вылетает exception. Меня бы устроило если бы для 3 и 4 показало бы, для 11 ничего, так как его нет, но не было бы exceptions.
Можно как-то в синтаксесе MDX такое поставить?
...
Рейтинг: 0 / 0
Убрать Exception cannot find dimension member
    #32829318
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
McLuadПредставим что есть dimension Profiles. У него есть level profile_id.
Допустим что в текущем состоянии dimension содержит следующие profile_id (3,4,5)
В случае, когда я пытаюсь обратиться к значению 10 то соответсвенно выдет ошибку cannot find dimension member и это правильно.

Но скажем так, я не всегда знаю точно какие именно id есть в текущем dimension. В MDX запрос вполне может попасть левые значения. Допустим в where я говорю покажи мне 3, 4, 11.
Вылетает exception. Меня бы устроило если бы для 3 и 4 показало бы, для 11 ничего, так как его нет, но не было бы exceptions.
Можно как-то в синтаксесе MDX такое поставить?


Да можно.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
with

set Set0 as 'Filter(Profiles.profile_id.members, (
(Profiles.Properties("NAME") = "3" OR
 Profiles.Properties("NAME") = "4" OR
 Profiles.Properties("NAME") = "11")'
member Profiles.FilterMember as SUM(Set0)

SELECT ...
...
FROM ...
WHERE Profiles.FilterMember
...
Рейтинг: 0 / 0
Убрать Exception cannot find dimension member
    #32829351
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, можно сделать как backfire предложил, или воспользоватья IsError(StrToMember(...)), что будет более оптимально если profiles много а выборка маленькая - но все эти методы выглядят "ненатурально", т.е. как бы выразились люди на этом форуме - "кривые". Поэтому в Юконе мы и сделали MdxMissingMembersMode о которой backfire спрашивал пару дней назад. Т.е. в Юконе просто пишешь:
Код: plaintext
SELECT {Profile.[ 3 ], Profile.[ 4 ], Profile.[ 10 ] } on COLUMNS
и если 10-го нет, то он в результирующем сете и не появится. Как в SQL :)

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
Убрать Exception cannot find dimension member
    #32829430
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MoshaДа, можно сделать как backfire предложил, или воспользоватья IsError(StrToMember(...)), что будет более оптимально если profiles много а выборка маленькая - но все эти методы выглядят "ненатурально", т.е. как бы выразились люди на этом форуме - "кривые". Поэтому в Юконе мы и сделали MdxMissingMembersMode о которой backfire спрашивал пару дней назад. Т.е. в Юконе просто пишешь:
Код: plaintext
SELECT {Profile.[ 3 ], Profile.[ 4 ], Profile.[ 10 ] } on COLUMNS
и если 10-го нет, то он в результирующем сете и не появится. Как в SQL :)

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights


Меня интересует более философский вопрос.
При каком сценарии вообще возникает желание/нужда/потребность написать в Mdx выражение идентификатор несуществующего member?

(мне ничего не приходит в голову кроме как: "Клиента оставили на ночь в коннекте с сервером, а за это время произошел полный репроцессинг и члены измерения исчезли, а утром Юзер нажав F5 получил бы в AS2K Error". Только дальше у меня здоровой фантазии не хватает. Это ж при каком раскладе исчезают члены измерения.
...
Рейтинг: 0 / 0
Убрать Exception cannot find dimension member
    #32829442
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
backfirfeПри каком сценарии вообще возникает желание/нужда/потребность написать в Mdx выражение идентификатор несуществующего member?
Ну таких сценариев много. Многие аппликации например хранят MDX statement как определениe saved view (Proclarity, Panorama, Excel и т.д.). Когда этот saved view поднимается и члены измерения пропадаут то эти аппликации сегодня вручнуу пытаытся понять что произошло.

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
Убрать Exception cannot find dimension member
    #32829446
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mosha backfirfeПри каком сценарии вообще возникает желание/нужда/потребность написать в Mdx выражение идентификатор несуществующего member?
Ну таких сценариев много. Многие аппликации например хранят MDX statement как определениe saved view (Proclarity, Panorama, Excel и т.д.). Когда этот saved view поднимается и члены измерения пропадаут то эти аппликации сегодня вручнуу пытаытся понять что произошло.

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights

Ну у нас те же проблемы, храним опредение отчета, не как голых MDХ, а структурированно и т.п.
При десериализации надо проверять действительность членов. По этому то я и задавал вопросы про независимость UniqueName от Caption.
Но как ни странно у меня никогда даже не возникало желания держать в настройках "старый мусор" и "волочить его по жизни".

Как правило вопросы "что же произошло и как спасти ситуацию" возникают только при Update/Upgrade и обеспечении backward compatibility, когда пропавшие члены измерения - просто детский лепет по сравнению с морфингом всей модели, и тут MdxMissingMembersMode будет как мертвому припарка.
...
Рейтинг: 0 / 0
Убрать Exception cannot find dimension member
    #32829606
Фотография Va1entin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
backfire
Меня интересует более философский вопрос.
При каком сценарии вообще возникает желание/нужда/потребность написать в Mdx выражение идентификатор несуществующего member?

Если, например, идентификаторы берутся из SQL, а сам запрос строится в MDX. Дело в том, что ADOMD неудобная штука для чтения, особенно если надо генерировать в динамическом MDX конструкции типа [1].[2] или [3].&[4],
гораздо проще прочитать ключ в SQL.
Или: у меня есть измерение времени, сгенерировать его ключ можно на клиенте по простому алгоритму и совсем не хочется читать несколько тысяч member'ов измерения, только для того, чтобы проверить, что нужный член измерения существует.
Тем более, что анонимный доступ к MS AS есть только по http, а это тормозит соединение, SQL работает значительно быстрее.
...
Рейтинг: 0 / 0
Убрать Exception cannot find dimension member
    #32829645
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ValentinТем более, что анонимный доступ к MS AS есть только по http, а это тормозит соединение, SQL работает значительно быстрее
Мы отвлекаемся, но анонимный доступ есть не только по HTTP. (достаточно указать SSPI=anonymous), и HTTP не тормозит. Правда я согласен что соединение в SQL все равно быстрее.

backfireНу у нас те же проблемы, храним опредение отчета, не как голых MDХ, а структурированно и т.п.
И как Вы решаете эти проблемы ? Есть список из 100 members, какие из них еще живы. Ведь в AS2K невозможно сделать MDSCHEMA_MEMBERS поставив в restriction массив...

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
Убрать Exception cannot find dimension member
    #32829705
McLuad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
backfire[quot Mosha]Меня интересует более философский вопрос.
При каком сценарии вообще возникает желание/нужда/потребность написать в Mdx выражение идентификатор несуществующего member?

(мне ничего не приходит в голову кроме как: "Клиента оставили на ночь в коннекте с сервером, а за это время произошел полный репроцессинг и члены измерения исчезли, а утром Юзер нажав F5 получил бы в AS2K Error". Только дальше у меня здоровой фантазии не хватает. Это ж при каком раскладе исчезают члены измерения.

Всем спасибо за ответы !.
Дело в том что как здесь уже говорили, ключи берутся из SQL запроса, а потом подставляются в MDX запрос. И как оказывается не все ключи существуют в dimension.
...
Рейтинг: 0 / 0
Убрать Exception cannot find dimension member
    #32829741
Фотография Va1entin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MoshaМы отвлекаемся, но анонимный доступ есть не только по HTTP. (достаточно указать SSPI=anonymous), и HTTP не тормозит. Правда я согласен что соединение в SQL все равно быстрее.

Спасибо.
А можно ещё вопрос?

Скажем так:
Код: plaintext
ConString = "Data Source=http://<server>;PROVIDER=MSOLAP;INITIAL CATALOG=<db>"
работает

Код: plaintext
ConString = "Data Source=<server>;PROVIDER=MSOLAP;INITIAL CATALOG=<db>;SSPI=anonymous"
не работает:

приложение сыпется на
connection.Open()
[COMException (0x80004005): Database '<db>' does not exist.]

Вопрос: какие ещё параметры надо указать, чтобы соединение заработало по anonymous? Использую anonymous только потому что MS AS не поддерживает standard security, а trusted соединение установить не могу.
Использую ADOMD 2.8 и MS AS Sp3.
...
Рейтинг: 0 / 0
Убрать Exception cannot find dimension member
    #32829756
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ValentinCOMException (0x80004005): Database '<db>' does not exist.]
Видимо дело в том, что пользователь IUSR_server вклучен в database role for database <db>, а пользоватрель NT AUTHORITY\ANONYMOUS LOGON не вклучен.
Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
Убрать Exception cannot find dimension member
    #32829800
Фотография Va1entin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MoshaВидимо дело в том, что пользователь IUSR_server вклучен в database role for database <db>, а пользоватрель NT AUTHORITY\ANONYMOUS LOGON не вклучен.
IUSR_server включён
NT AUTHORITY\ANONYMOUS LOGON - спасибо, а где его найти?
На закладке Manage roles/New/Add его нет.
Это локальный пользователь сервера?
Я его видел в событиях SQL Profiler'а, но среди пользователей найти не могу
...
Рейтинг: 0 / 0
Убрать Exception cannot find dimension member
    #32829999
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MoshaИ как Вы решаете эти проблемы ? Есть список из 100 members, какие из них еще живы. Ведь в AS2K невозможно сделать MDSCHEMA_MEMBERS поставив в restriction массив...



MDX запросом :-).
Я же не раз говорил, что SchemaRowSet имеет достаточно неудобный интерфейс :-)


Кстати, вопрос, кешируется ли в PivotTableService результаты SchemaRowSet или всегда с сервера тянутся?
...
Рейтинг: 0 / 0
Убрать Exception cannot find dimension member
    #32830358
Фотография Va1entin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NT AUTHORITY\ANONYMOUS LOGON - спасибо а где его найти?

Нашёл. Спасибо. Работает раза в 2 быстрее, чем по http.
...
Рейтинг: 0 / 0
Убрать Exception cannot find dimension member
    #32831294
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
backfireMDX запросом :-).
Можно пожалуйста привести пример MDX запроса который проверяет какие из 100 member unique names по прежнему существуют ?

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Убрать Exception cannot find dimension member
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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