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

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

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

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

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

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

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

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

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

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

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

Рассмотрите ROLAP на исходную БД с колумстором. На Вертике должно быть круто, но и на MSSQL тоже должно рулить с 2016.
...
Рейтинг: 0 / 0
Оптимизация distinct count мер
    #39863781
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Оптимизация distinct count мер
    #39864033
Фотография StarikNavy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voroninDreamTheme,

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

а смысл? MOLAP после обработки к исходным данным не обращается.
...
Рейтинг: 0 / 0
Оптимизация distinct count мер
    #39864234
T87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Оптимизация distinct count мер
    #39864378
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
T87,

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

HardMemoryLimit 80
LowMemoryLimit 45
TotalMemoryLimit 75
VertiPaqMemoryLimit 60

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

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


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

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

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

Преимущество ROLAP в том, что считать distict count будет не SSAS, а БД, которая может это делать эффективнее.
Создал тестовую группу мер с фактом в режиме ROLAP (ProactiveCaching=Off). При процессинге она обрабатывалась как обычно. А при попытке вывести ее в сводной идет чтение секций OLAP без обращения к DWH. В чем может быть причина? Похоже не работает.
...
Рейтинг: 0 / 0
Оптимизация distinct count мер
    #39868384
DreamTheme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался с ROLAP, просто в настройках партиций забыл сменить тип, он стал MOLAP, хоть и ROLAP был по умолчанию.
Но первые тесты отрицательны. Во-первых, структура БД требует джойнов (например по Товару подтянуть его Бренд...). Ну и без Column Stored Index в Standard редакции медленно чтение идет... Переделаю структуру таблицы для теста, отпишусь.

Интересно, насколько для MOLAP важна таблица факта по схеме звезда?
Т.е. атрибуты Товара (Бренд, Вес...) и Магазинов (Регион, Дивизион...) были как столбцы в таблице фактов.
...
Рейтинг: 0 / 0
26 сообщений из 26, показаны все 2 страниц
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Оптимизация distinct count мер
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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