powered by simpleCommunicator - 2.0.43     © 2025 Programmizd 02
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Инкрементный процессинг большого измерения
5 сообщений из 5, страница 1 из 1
Инкрементный процессинг большого измерения
    #40077012
IlyamI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всех приветствую.

Пытаюсь реализовать инкрементный процессинг большого измерения.

Пример реализации

Допустим, есть измерение "Клиент" с атрибутами "Дата заведения", "Наименование" и ключ "ID". С фактами, соответственно, соединяем по ключу.
Группы мер разбиты на партиции по датам, процессятся с пропуском ошибок с KeyErrorAction=ConvertToUnknown.

Сценарий следующий: при первоначальном развертывании куба первая секция групп мер - на дату 01.01.2021. Измерение "Клиент" на "дату заведения" 01.01.2021.
Затем начинаем добавлять секции данных на каждый новый день в сторону увеличения.
"Клиентов" грузим по "дате заведения" на один день вперед и один день назад" - <Type>ProcessAdd</Type>.
То есть, хочу добиться того, чтобы те клиенты, которые на 01.01.2021 попали в ConvertToUnknown, при добавлении в измерение с "датой заведения" 31.12.2020 "конвертировались" обратно в нормальных.

Запрос инкрементного добавления в измерение отрабатывает нормально, измерение пересчитывается, новые данные добавляются.
Но при этом то, что ранее попало в ConvertToUnknown так и остается ConvertToUnknown.

Профайлером сравнил работу обработки измерения <Type>ProcessAdd</Type> и <Type>ProcessUpdate</Type>. Во втором случае после обработки измерения запускается обработка куба. в Первом случае такого не происходит.
(<Type>ProcessUpdate</Type> использует певоначальную версию скрипта, так что данные, загруженные позднее, удаляются).
Пытался процессить партиции всеми возможными <Type>, нужного эффекта добиться не получается.

Что можете посоветовать?
Измерение достигает нескольких миллионов записей, процессить его каждый раз полностью очень накладно по времени (с учетом того, что они берутся через линк и т.д. Здесь оптимизация невозможна). Если у вас получается это сделать за считанные минуту (10-20), прошу поделиться опытом.
...
Рейтинг: 0 / 0
Инкрементный процессинг большого измерения
    #40077031
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IlyamI

То есть, хочу добиться того, чтобы те клиенты, которые на 01.01.2021 попали в ConvertToUnknown, при добавлении в измерение с "датой заведения" 31.12.2020 "конвертировались" обратно в нормальных.

вчитайтесь внимательно в то что написали. бред сивой кобылы, извините.
ключи в измерении ни в каких ConvertToUnknown не участвуют.
все что подразумевалось в этой фразе относится к секции. поэтому достаточно после processAdd измерения загрузить секцию заново.
но это не айс. лучше "добивать" данные измерения на дату, теми ключами из секции, которые при Вашем подходе, конвертятся в unknown при ее обработке. достаточно даже все остальные атрибуты сбросить в какой-нибудь "(данные будут дополнены позднее"). А позднее processUpdate измерения, которое при необходимости обработает нужную секцию, там достаточно будет processindex.

но при таком количестве вообще не понятно зачем такие танцы. ну было бы сотни миллионов-миллиарды.. да, может и задумался бы..
но сейчас
6 лям ключей с >50 атибутами - 7 минут (только само измерение) при Process Full на базе
2 по ~100 лям ключей с 5 атрибутами - 30 минут Process Update включая Process Full оперативной секции

что у Вас там с атрибутами кторые через линк? что за линк почему невозможна? по-моему дело в этом.
...
Рейтинг: 0 / 0
Инкрементный процессинг большого измерения
    #40077070
Monarchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IlyamI

Запрос инкрементного добавления в измерение отрабатывает нормально, измерение пересчитывается, новые данные добавляются.
Но при этом то, что ранее попало в ConvertToUnknown так и остается ConvertToUnknown.


Так и должно быть, инкрементальный процессинг только для добавления новых записей. Старые записи меняются через ProcessUpdate. Рассмотрите вариант добавления исправленных записей, а старые в выходные или ночью удалять при чистке мусора.

IlyamI


Профайлером сравнил работу обработки измерения <Type>ProcessAdd</Type> и <Type>ProcessUpdate</Type>. Во втором случае после обработки измерения запускается обработка куба. в Первом случае такого не происходит.
(<Type>ProcessUpdate</Type> использует певоначальную версию скрипта, так что данные, загруженные позднее, удаляются).
Пытался процессить партиции всеми возможными <Type>, нужного эффекта добиться не получается.

Что можете посоветовать?
Измерение достигает нескольких миллионов записей, процессить его каждый раз полностью очень накладно по времени (с учетом того, что они берутся через линк и т.д. Здесь оптимизация невозможна). Если у вас получается это сделать за считанные минуту (10-20), прошу поделиться опытом.


ProcessUpdate после обновления самих измерений идет по всем фактам, которые с ним связаны и удаляет индексы/агрегаты для тех атрибутов, которые по факту изменились. После куб будет тормозить, пока не запустишь ProcessDefault для фактов.
Поэтому если фактов много, то ProcessUpdate , а затем ProcessDefault для фактов - долгий процесс, даже если измерение не очень большое.
Если появились только новые данные, а старые не менялись и не удалялись, то ProcessUpdate пройдет быстро - обновится только измерение, а индексы/агрегаты фактов останутся на месте. Но это не всегда легко добиться, чтобы старые данные не менялись и не удалялись без спец. запуска чистки мусора.

Можно также и через - инкремент измерения, но оно должно быть спроектировано так, чтобы при изменениях в клиентах добавлялись новые записи, а старые чистились ночью или в выходные очисткой мусора. Удаление или изменение старых данных инкремент игнорирует, тормозить при них не будет.
...
Рейтинг: 0 / 0
Инкрементный процессинг большого измерения
    #40077106
IlyamI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо, особенно за первый очень эмоциональный ответ.

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

Сценарий отработан, выдает необходимый результат. Первоначально выбрал неудачный период времени: начало года, праздники, короткий период.

Тему можно считать закрытой
...
Рейтинг: 0 / 0
Инкрементный процессинг большого измерения
    #40077133
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IlyamI,

эмоций там особо не было.. просто уж если пишешь, так разберись сначала в теме.
по поводу сети и т.п. а думаешь у меня все локально и примеры из теплой солнечной песочницы?
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Инкрементный процессинг большого измерения
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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