powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / тормозит условие OR в WHERE
10 сообщений из 10, страница 1 из 1
тормозит условие OR в WHERE
    #39675509
spb_kostya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Есть проблема со сложным выбором из куба.

Если в WHERE пишу условие с использованием OR, то есть вот так:
Код: plaintext
1.
WHERE  { ( [Dates].[Year].[2018],[Dates].[Month Num].[1]:[Dates].[Month Num].[6], [Dim1].[A], [Dim2].[A] ,  filter([Dim3].members, [Dim3].currentmember.name <> 'C') ) , 
( [Dates].[Year].[2018],[Dates].[Month Num].[1]:[Dates].[Month Num].[6],[Dim1].[A], [Dim2].[B],  [Dim3].members ) }

то все зависает надолго, невозможно дождаться ответа.

если каждое условие запускать отдельно ,
Код: plaintext
WHERE   ( [Dates].[Year].[2018],[Dates].[Month Num].[1]:[Dates].[Month Num].[6], [Dim1].[A], [Dim2].[A] ,  filter([Dim3].members, [Dim3].currentmember.name <> 'C')  )
и потом
Код: plaintext
WHERE  ( [Dates].[Year].[2018],[Dates].[Month Num].[1]:[Dates].[Month Num].[6],[Dim1].[A], [Dim2].[B],  [Dim3].members ) 

то каждый запрос работает меньше минуты.

мне нужно получить общую сумму, которая подходит под то или иное условие.
как мне уговорить запрос работать быстро?
...
Рейтинг: 0 / 0
тормозит условие OR в WHERE
    #39675584
vborets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spb_kostya,

UNION ALL
...
Рейтинг: 0 / 0
тормозит условие OR в WHERE
    #39675719
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spb_kostya,

1) Arbitrary Shape в MDX настоятельно и по возможности рекомендуется избегать по причинам деградации производительности

2) Попробуй перейти к ключам вместо имён : [Dates].[Year].[2018] -> [Dates].[Year].&[2018] и [Dates].[Month Num].[1] -> [Dates].[Month Num].&[1]

3) Оптимизируй измерения (типы данных ключей, связи, и пр.)

4) упрости выражения, вынеси общее отдельно, напр. у тебя ([Dates].[Year].&[2018],[Dates].[Month Num].&[1]:[Dates].[Month Num].&[6],[Dim1].&[A]) является общим для обоих tupl - ов, следовательно вместо записи
where{(Х,У,А,Б),(Х,У,В,Г)} попробуй запись where((X,У),{(А,Б),(В,Г)}) или даже from(select(X,У)on 0 from Z)where{(А,Б),(В,Г)}

5) укажи полное наименование атрибута в форме [измерение].[атрибут].[элемент]. (точнее [измерение].[атрибут].&[ключь]). вместо [Dim2] .. [Dim3] и пр.
...
Рейтинг: 0 / 0
тормозит условие OR в WHERE
    #39675724
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
6) Модифицируй фильтр вместо:
filter([Dim3].members, [Dim3].currentmember.name <> 'C')
желательно (функция except()):
{[измерение].[атрибут].members - [измерение].[атрибут].[C]}
или лучше
{[измерение].[атрибут].members - [измерение].[атрибут].&[C]}
...
Рейтинг: 0 / 0
тормозит условие OR в WHERE
    #39675734
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
7) на последней позиции не обязательно указывать [Dim3].members , достаточно будет All (или defaultmember если он-же стоит) - может быть важно если количество элементов за миллионы (тогда нет необходимости их перечесления)
...
Рейтинг: 0 / 0
тормозит условие OR в WHERE
    #39675765
spb_kostya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
честно говоря, я уже чего только не делал.

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

filter([Dim3].members, [Dim3].currentmember.name <> 'C')
изначально писал как ....members - .....[All] - ....[C]

везде там в запросе есть [измерение].[атрибут].[элемент], просто я для наглядности их опустил

[Dim3].members было [Dim3].[All]

Оптимизировать измерения я никак не могу, так как не являюсь админом базы, а только для заказчика настраиваю аналитику по данным

в общем попробовал сейчас с ключами, поставил везде амперсанд перед значением.
отработало за минуту, но в результате явно не то, что должно быть. Крайне маленькие числа. и очень мало строк в результате. :-(
...
Рейтинг: 0 / 0
тормозит условие OR в WHERE
    #39675779
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spb_kostya,


потому что во первых имя не обязательно равняется ключу (это могут быть разные поля исходной SQL таблицы) - например [dim3].[аттр1].[а] может быть [dim3].[аттр1].&[28].

во вторых - имена не обязательно уникальны, если обращаешься по имени - выбирается первых подходящий элемент, остальные пропускаются.

так-же для сокращения data space можно попробовать вынести все известные критерии в суб-куб / подзапрос : from (...)

но сначала лучше определить что именно тормозит - и на каком этапе.
...
Рейтинг: 0 / 0
тормозит условие OR в WHERE
    #39675792
spb_kostya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vikkiv,

а как определить причину торможения?
...
Рейтинг: 0 / 0
тормозит условие OR в WHERE
    #39675795
spb_kostya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ещё есть вопрос, я обращаюсь к кубу по JDBC и в какой-то момент при добавлении ещё одной размерности я получаю ошибку java.lang.NullPointerException

при этом изменение nonempty() на non empty помогает избежать этой ошибки...

в чем может быть причина.
...
Рейтинг: 0 / 0
тормозит условие OR в WHERE
    #39675805
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spb_kostya..а как определить причину торможения?..разбить поэтапно на операции которые выполняет ядро SSAS при обработке запроса
есть множество средств (MDX Studio и пр.) все из которых в принципе берут данные из Profiler считая разницы между различными events.
можно даже какой-то план выполнения составить из разных фрагментов, у тебя много где members стоит, значит нужно All , хотя без него может быть быстрее через from(select{set/shape}on 0from..)
смотреть агрегации,партиции,subcubes,crossjoin-ы, разбирать сам запрос, что там за расчётные меры и т.д. и т.п.

по твоему драйверу и специфике его работы - не в курсе.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / тормозит условие OR в WHERE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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