Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Оптимизация distinct count мер / 25 сообщений из 26, страница 1 из 2
10.09.2019, 10:57
    #39859725
DreamTheme
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация distinct count мер
Перечитав все, что можно найти по distinct count оптимизации в многомерном кубе MS SSAS, прихожу к мнению, что единственный вариант в случае, если атрибут попавший под distinct count имеет слишком большое число исходных строк с учетом нужных агрегаций, - это предрассчитанные факты.

Но таких фактов, спасибо пытливым умам заказчиков, получается множество...
Встает вопрос, можно ли как-то вывести нужный предрасчитаный факт в зависимости от накиданных пользователем полей в сводной?

То есть, например: пользователь выбрал "Уникальное число магазинов", с продажами Товар-Месяц и видит нужный факт,
или пользователь выбрал "Уникальное число магазинов", с продажами Бренд_товара-Месяц и видит нужный факт...
(Таких разрезов может быть до нескольких десятков и пользователю неудобно выбирать нужный факт самостоятельно и может ошибиться).

Может кто-то знает, как это сделать в вычислении у куба? (Вычисление для вывод нужного факта в зависимости от гранулярности сводной по измерениям...)

Проблема очень распространенная, как я понял. Увы пока решения нет..
...
Рейтинг: 0 / 0
10.09.2019, 15:53
    #39859915
T87
T87
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация distinct count мер
...
Рейтинг: 0 / 0
11.09.2019, 09:13
    #39860127
DreamTheme
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация distinct count мер
Да, тоже поможет для части случаев.

Но изначально идея была наиболее частые запросы пользователей к тяжелому факту с distinct count (около 200 млн строк) создать в виде готовых таблиц. Т.е. изначально Товар-Магазин-Месяц, и добавить Регион-Бренд товара-Месяц и около 10 прочих вариаций.
Затем создать вычисляемое выражение, которое при его вытягивании на сводную в Excel неким образом смотрит на текущую гранулярность по всем измерениям и выбирает для отображения соответствующий факт, а если такого нет, то выводит исходную тяжелую меру.
...
Рейтинг: 0 / 0
11.09.2019, 09:41
    #39860142
George Nordic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация distinct count мер
DreamTheme, в любом случае фильтр + sum отработают быстрее чем Distinct Count. Что если ввести поле "выручка за день" и по ней считать сумму по примененным фильтрам - бренд / категория / регион и т.д.?

С Уважением,
Георгий
...
Рейтинг: 0 / 0
11.09.2019, 17:41
    #39860460
DreamTheme
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация distinct count мер
George Nordic, я рассчитываю [Уникальное число магазинов]. Исходных данных Магазин-Товар-Месяц около 200 млн. и горизонт будет все увеличиваться.

Пользователям, конечно, не нравится, когда они смотрят [Уникальное число магазинов] в разрезе
Регион-Товар-Месяц, что эти 300 тыс. строк выгружаются очень долго. Причина понятна, distinct count всех магазинов внутри каждого сочетания Регион-Товар-Месяц, с учетом, что в одном регионе может быть несколько тысяч магазинов.

И из-за того, что измерение магазинов имеет самое большое число элементов листового уровня (магазины) любые агрегации не значительно уменьшают выборку для distinct count(

Но пользователи не хотят, чтобы нужно было выбирать нужный факт из предрасчитанных разрезов. Тем более, что их может получиться несколько сотен, если пытаться покрыть все запросы..
...
Рейтинг: 0 / 0
12.09.2019, 10:06
    #39860723
George Nordic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация distinct count мер
DreamTheme, а что мешает сделать, например, 4 отдельных поля, сумма, флаг 1 если сумма 0, остаток в шт, флаг 1 если остаток 0 по Магазин-Товар-День? Таким образом, если мы хотим видеть магазины где не было продаж, или остаток был ноль - мы просто ставим фильтр по ненулевым и получаем выборку. Или ставим фильтр "магазин-месяц" и считаем сумму по "сумма" или "остаток". Идея понятна? Отпишите georgend@mail.ru, помогу - данная задача очень типовая.

С Уважением,
Георгий
...
Рейтинг: 0 / 0
18.09.2019, 16:43
    #39863437
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация distinct count мер
DreamTheme,

Рассмотрите ROLAP на исходную БД с колумстором. На Вертике должно быть круто, но и на MSSQL тоже должно рулить с 2016.
...
Рейтинг: 0 / 0
19.09.2019, 11:01
    #39863781
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация distinct count мер
DreamTheme,

у вас фактов 200млн в мес?

я просто проверил на своих данных и немного в другом разрезе, но по сути ничего не меняет:

>220 млн строк исходных данных
4млн значений атрибута (аналог ваших магазинов), по которому будем считать DC
результирующая матрица 7000x120=840тыс вычислений DC

в кубе агрегатов нет от слова вообще, до уровня единственного факта спуститься не проблема.
измерений около 30, всего атрибутов около 200

первый расчет полторы минуты (но куб в продакшене и добавляются новые данные каждые 2 минуты, мог попасть на ожидание обработки)
последующие срезы, выборки, сортировки - не больше 10 сек. каждая
замена одного измерения (7000 строк) другим (4500 строк) - минута, дальше опять без проблем (видимо насчитывает необходимые агрегаты)
добавление в запрос других не DC мер - 5-30 сек. в зависимости от функции агрегации

по железу, 2xXeon e5-2643 (10 логических процов на SSAS, 6 на SQL, 2 на остальное), 128Gb RAM (напополам с SQL) , в SSAS кроме этой базы еще 2 десятка баз из которых половина с такими же характеристиками и нагрузкой.
за 1000 сек интервал: SSAS Avg Current connection = 55.6, Avg Queries answered/sec = 3.679, Avg Time\query = 565.19 ms
...
Рейтинг: 0 / 0
19.09.2019, 15:25
    #39864033
StarikNavy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация distinct count мер
a_voroninDreamTheme,

Рассмотрите ROLAP на исходную БД с колумстором. .
а почему не просто Molap + колумстор?
...
Рейтинг: 0 / 0
19.09.2019, 17:53
    #39864135
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация distinct count мер
StarikNavy,

а смысл? MOLAP после обработки к исходным данным не обращается.
...
Рейтинг: 0 / 0
19.09.2019, 21:20
    #39864234
T87
T87
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация distinct count мер
ShIgorDreamTheme,

у вас фактов 200млн в мес?

я просто проверил на своих данных и немного в другом разрезе, но по сути ничего не меняет:

>220 млн строк исходных данных
4млн значений атрибута (аналог ваших магазинов), по которому будем считать DC
результирующая матрица 7000x120=840тыс вычислений DC

в кубе агрегатов нет от слова вообще, до уровня единственного факта спуститься не проблема.
измерений около 30, всего атрибутов около 200

первый расчет полторы минуты (но куб в продакшене и добавляются новые данные каждые 2 минуты, мог попасть на ожидание обработки)
последующие срезы, выборки, сортировки - не больше 10 сек. каждая
замена одного измерения (7000 строк) другим (4500 строк) - минута, дальше опять без проблем (видимо насчитывает необходимые агрегаты)
добавление в запрос других не DC мер - 5-30 сек. в зависимости от функции агрегации

по железу, 2xXeon e5-2643 (10 логических процов на SSAS, 6 на SQL, 2 на остальное), 128Gb RAM (напополам с SQL) , в SSAS кроме этой базы еще 2 десятка баз из которых половина с такими же характеристиками и нагрузкой.
за 1000 сек интервал: SSAS Avg Current connection = 55.6, Avg Queries answered/sec = 3.679, Avg Time\query = 565.19 ms
Помимо мер измерения вытаскивали?
...
Рейтинг: 0 / 0
20.09.2019, 08:53
    #39864378
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация distinct count мер
T87,

одной мерой матрицу не получишь
...
Рейтинг: 0 / 0
20.09.2019, 11:55
    #39864480
DreamTheme
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация distinct count мер
Основная проблема в том, что у нас Standard 2014 и ни Columnstore ни многопоточной обработки(
ROLAP не поддерживается.
Не уверен, но пока не удается что-либо ускорить, хотя данных не так и много.
Данные пополняются раз в месяц и сейчас их около 250 млн. строк.
Разрез Магазин-Товар-Месяц.
Есть измерения для магазинов (около 300 000), товаров (20 000), месяцев (20).

И, например, distinct count для вычисления уникального числа Магазинов в разрезе Регион-БрендТовара-Месяц, на холодную, идет около 10 минут.
Но есть необходимость расчета и более сложных формул, например Взвешенной дистрибуции (для него нужен факт Магазин-Месяц, привязываемый через многие-ко-многим к основному факту).

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


Железо: 20 виртуальных процов Intel Xeon X5650 2,67 ГГц, 96 Гб ОЗУ (SSAS + DBE).
...
Рейтинг: 0 / 0
20.09.2019, 12:59
    #39864567
DreamTheme
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация distinct count мер
Так же интересен факт, что при сложных запросах к кубу (выборка через сводную Excel), которые могут висеть около 1-2 часов (часто падая по лимиту для запроса в 2 часа), нагрузка на сервере редко более 30%.

Есть подозрение, что несколько не оптимально настроена служба SSAS, либо все дело в SQL Standard 2014 (хорошо хоть x64)..
Может есть идеи, что в первую очередь нужно проверить, настройки, вроде, все дефолтные.
...
Рейтинг: 0 / 0
20.09.2019, 14:24
    #39864641
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация distinct count мер
DreamThemeЕсть измерения для магазинов (около 300 000), товаров (20 000), месяцев (20)

если действительно 300 000 магазинов, то обратитесь в премьер-поддержку MS,
они крупным клиентам помогают

если нет, то выкидывайте из куба закрытые магазины и товары, которые уже не поставляются ваши 20 месяцев
...
Рейтинг: 0 / 0
20.09.2019, 14:43
    #39864658
DreamTheme
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация distinct count мер
Критик, там магазины просто и торговых представителей есть в том числе)

Похоже единственное решение, все же, предрасчет наиболее важных срезов и их использование.
Хорошо бы, если через MDX в вычислениях можно было вывести нужный срез (за несколько сек), в зависимости от того, какие атрибуты накидали в сводник. Ну а если такого среза нет, то вывести расчетное DC (и висеть пару часов).
...
Рейтинг: 0 / 0
20.09.2019, 14:50
    #39864663
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация distinct count мер
ShIgorStarikNavy,

а смысл? MOLAP после обработки к исходным данным не обращается.

Потому что MOLAP обращается к копии исходных данных в OLAP БД. А это менее эффективный механизм, чем более современные DISTINCT COUNT на колумнсторе.
...
Рейтинг: 0 / 0
20.09.2019, 14:55
    #39864666
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация distinct count мер
a_voronin,

ответ не в тему
речь о MOLAP на columnstore
а не о ROLAP
...
Рейтинг: 0 / 0
20.09.2019, 15:34
    #39864702
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация distinct count мер
ShIgora_voronin,

ответ не в тему
речь о MOLAP на columnstore
а не о ROLAP

Речь шла об ускорении DISTINCT COUNT. Мое предложение состояло в том, чтобы отказать от MOLAP и сделать ROLAP на исходную БД для DISTINCT COUNT группы мер.
...
Рейтинг: 0 / 0
23.09.2019, 11:25
    #39865495
StarikNavy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация distinct count мер
>>а смысл? MOLAP после обработки к исходным данным не обращается

a_voroninПотому что MOLAP обращается к копии исходных данных в OLAP БД. А это менее эффективный механизм, чем более современные DISTINCT COUNT на колумнсторе.

я наверное туплю, но ведь куда лезет запрос за данными - не зависит от того молап это или ролап. как укажем.

т.е. в классическом случаем у нас есть хранилище, куда ЕТЛ заливаеn данные (сооответственно это хранилище мы можем переделать на колумсторе), дальше строим куб с ДистиктКаунтами.

в чем приемущество именно РОЛАП - к нижках же пишут что РОЛАП нужен, если у нас надо данные поддерживать в актуальном состоянии
...
Рейтинг: 0 / 0
23.09.2019, 12:21
    #39865535
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация distinct count мер
DreamTheme,

в первую очередь заменить сервер.
SSAS сродни компьютерным играм с прожорливой графикой.
попробуйте погонять современные игры с полными настройками на железе 10летней давности, боюсь что даже топовые видюхи тех лет приведут в удручающее состояние любого.
найдите(купите) обычный комп с хорошим процом (4GHz), память DDR4, SSD m.2 c чтением/запись 3000/1000 и тупо протестируйте Ваши запросы на нем.

Поверьте, Вашему удивлению не будет предела.
...
Рейтинг: 0 / 0
24.09.2019, 13:32
    #39866289
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация distinct count мер
StarikNavy>>а смысл? MOLAP после обработки к исходным данным не обращается

a_voroninПотому что MOLAP обращается к копии исходных данных в OLAP БД. А это менее эффективный механизм, чем более современные DISTINCT COUNT на колумнсторе.

я наверное туплю, но ведь куда лезет запрос за данными - не зависит от того молап это или ролап. как укажем.

т.е. в классическом случаем у нас есть хранилище, куда ЕТЛ заливаеn данные (сооответственно это хранилище мы можем переделать на колумсторе), дальше строим куб с ДистиктКаунтами.

в чем приемущество именно РОЛАП - к нижках же пишут что РОЛАП нужен, если у нас надо данные поддерживать в актуальном состоянии

Преимущество ROLAP в том, что считать distict count будет не SSAS, а БД, которая может это делать эффективнее.
...
Рейтинг: 0 / 0
24.09.2019, 18:25
    #39866560
DreamTheme
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация distinct count мер
ShIgor, подскажите, а что именно плохо в моей конфигурации? Я думал, что по железу - вполне нормально?
И проблема только в Standard редакции сервера (лимиты 64 Гб ОЗУ и по процам...).
И из-за отсутствия многопоточности (ограничение редакции) мощность сервера даже не раскроется...

>>Железо: 20 виртуальных процов Intel Xeon X5650 2,67 ГГц, 96 Гб ОЗУ (SSAS + DBE).

Диск там вроде нормальный, хотя и через сетевой интерфейс вроде.
...
Рейтинг: 0 / 0
26.09.2019, 14:37
    #39867340
DreamTheme
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация distinct count мер
Товарищи, может у кого есть на примете какая-нибудь ссылка на описание оптимальных настроек SSAS службы?
Например, многие рекомендуют увеличить размер пакетов для обмена и подобное...
Но реально у нас на сервере, кроме соответствующих лимитов на ОЗУ ничего не меняли. И еще включено логирование запросов, но там по умолчанию, - не все запросы.

HardMemoryLimit 80
LowMemoryLimit 45
TotalMemoryLimit 75
VertiPaqMemoryLimit 60

Так же актуален вопрос оптимальной конфигурации (см. прошлый пост). Что может быть причиной, что запросы крутятся долго (до двух часов), а загрузка ОЗУ и процов не более 30%?
...
Рейтинг: 0 / 0
27.09.2019, 09:27
    #39867699
DreamTheme
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация distinct count мер
a_voroninStarikNavy>>а смысл? MOLAP после обработки к исходным данным не обращается

пропущено...


я наверное туплю, но ведь куда лезет запрос за данными - не зависит от того молап это или ролап. как укажем.

т.е. в классическом случаем у нас есть хранилище, куда ЕТЛ заливаеn данные (сооответственно это хранилище мы можем переделать на колумсторе), дальше строим куб с ДистиктКаунтами.

в чем приемущество именно РОЛАП - к нижках же пишут что РОЛАП нужен, если у нас надо данные поддерживать в актуальном состоянии

Преимущество ROLAP в том, что считать distict count будет не SSAS, а БД, которая может это делать эффективнее.
Создал тестовую группу мер с фактом в режиме ROLAP (ProactiveCaching=Off). При процессинге она обрабатывалась как обычно. А при попытке вывести ее в сводной идет чтение секций OLAP без обращения к DWH. В чем может быть причина? Похоже не работает.
...
Рейтинг: 0 / 0
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Оптимизация distinct count мер / 25 сообщений из 26, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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