|
Инкрементный процессинг большого измерения
|
|||
---|---|---|---|
#18+
Всех приветствую. Пытаюсь реализовать инкрементный процессинг большого измерения. Пример реализации Допустим, есть измерение "Клиент" с атрибутами "Дата заведения", "Наименование" и ключ "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), прошу поделиться опытом. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2021, 19:08 |
|
Инкрементный процессинг большого измерения
|
|||
---|---|---|---|
#18+
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 оперативной секции что у Вас там с атрибутами кторые через линк? что за линк почему невозможна? по-моему дело в этом. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2021, 21:58 |
|
Инкрементный процессинг большого измерения
|
|||
---|---|---|---|
#18+
IlyamI Запрос инкрементного добавления в измерение отрабатывает нормально, измерение пересчитывается, новые данные добавляются. Но при этом то, что ранее попало в ConvertToUnknown так и остается ConvertToUnknown. Так и должно быть, инкрементальный процессинг только для добавления новых записей. Старые записи меняются через ProcessUpdate. Рассмотрите вариант добавления исправленных записей, а старые в выходные или ночью удалять при чистке мусора. IlyamI Профайлером сравнил работу обработки измерения <Type>ProcessAdd</Type> и <Type>ProcessUpdate</Type>. Во втором случае после обработки измерения запускается обработка куба. в Первом случае такого не происходит. (<Type>ProcessUpdate</Type> использует певоначальную версию скрипта, так что данные, загруженные позднее, удаляются). Пытался процессить партиции всеми возможными <Type>, нужного эффекта добиться не получается. Что можете посоветовать? Измерение достигает нескольких миллионов записей, процессить его каждый раз полностью очень накладно по времени (с учетом того, что они берутся через линк и т.д. Здесь оптимизация невозможна). Если у вас получается это сделать за считанные минуту (10-20), прошу поделиться опытом. ProcessUpdate после обновления самих измерений идет по всем фактам, которые с ним связаны и удаляет индексы/агрегаты для тех атрибутов, которые по факту изменились. После куб будет тормозить, пока не запустишь ProcessDefault для фактов. Поэтому если фактов много, то ProcessUpdate , а затем ProcessDefault для фактов - долгий процесс, даже если измерение не очень большое. Если появились только новые данные, а старые не менялись и не удалялись, то ProcessUpdate пройдет быстро - обновится только измерение, а индексы/агрегаты фактов останутся на месте. Но это не всегда легко добиться, чтобы старые данные не менялись и не удалялись без спец. запуска чистки мусора. Можно также и через - инкремент измерения, но оно должно быть спроектировано так, чтобы при изменениях в клиентах добавлялись новые записи, а старые чистились ночью или в выходные очисткой мусора. Удаление или изменение старых данных инкремент игнорирует, тормозить при них не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2021, 09:48 |
|
Инкрементный процессинг большого измерения
|
|||
---|---|---|---|
#18+
Всем спасибо, особенно за первый очень эмоциональный ответ. Если бы не было проблемы с большими измерениями (не по количеству атрибутов, а по количеству записей и скоростью их загрузки по сети), я бы не поднимал тему во второй раз. Попробуйте отказать финансам, когда они хотят видеть в кубе все платежки. У них ответ один: нам надо. не нравится, найдем другого. Сценарий отработан, выдает необходимый результат. Первоначально выбрал неудачный период времени: начало года, праздники, короткий период. Тему можно считать закрытой ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2021, 11:02 |
|
|
start [/forum/topic.php?fid=49&fpage=3&tid=1857127]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
23ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
others: | 247ms |
total: | 354ms |
0 / 0 |