fbpx

Инкрементальная загрузка BI-приложения

Вы здесь:

BI-приложение инкрементальной загрузки состоит из четырех частей:

1) Код загрузки номера версии последнего изменения в переменную vLastVer.

За хранение и присвоение новых значений переменной vLastVer отвечает BI-приложение.

Переменная vLastVer хранит максимальный номер версии последних изменений загруженных и обработанных в прошлый раз.

При первоначальном запуске отслеживания изменений переменная vLastVer должна иметь значение -1

2) Код загрузки с SQL сервера номера версии последнего изменения в базе данных 1С в переменную vNextVer. Переменная vNextVer хранит номер версии последних изменений на текущий момент времени.

3) Список SELECT-скриптов для отбора изменений. Каждый скрипт содержит переменную vLastVer, для фильтрации отбираемых данных по номеру версии изменения

4) Код присвоения нового значения переменной vLastVer. В качестве нового значения используется значение переменной vNextVer.

Далее BI-приложение сохраняет vLastVer для использования при следующем прогоне.

BI-приложение может использовать любой способ сохранения и загрузки переменной vNextVer – для этого можно использовать текстовый файл, Qvd-файл и др.

Далее, на пример QlikView/QlikSense, в схематичном виде приведен пример приложения инкрементальной загрузки.

В примере ниже для хранения переменной vLastVer используется тестовый файл CT_VER.txt

Первоначальное содержимое файла CT_VER.txt хранит значение vNextVer = -1

//—————– Cоединение с БД 1С
OLEDB CONNECT TO [Provider=SQLOLEDB.1;Integrated Security=SSPI……………

LET PATH =left(DocumentPath(), index(DocumentPath(), ‘\’, -1)); //—- путь к файлу CT_VER.txt

//—————– 1) получить текущую Версия vLastVer – хранится приложением

CT_LAST:
LOAD @1 AS LAST_VER_CT FROM [$(PATH)CT_VER.txt]

(txt,codepage is 1251, no labels, no quotes, header is 1 lines);
LET vLastVer = NUM(peek(‘LAST_VER_CT’, 0, ‘CT_LAST’));
DROP TABLE CT_LAST;

//—————— 2) получить от SQL-сервера Следующую Версия=ю vNextVer
CT_NEXT:
SELECT CHANGE_TRACKING_CURRENT_VERSION() as NEXT_VER_CT;
LET vNextVer = NUM(peek(‘NEXT_VER_CT’,0,’CT_NEXT’));
DROP TABLE CT_NEXT;

//—————– 3) загрузка изменений
Документы.ABCКлассификацияПокупателей:
SELECT
CT.SYS_CHANGE_VERSION
,CT.SYS_CHANGE_OPERATION
,CT._IDRRef [ABCКлассификацияПокупателей ID]
FROM
CHANGETABLE(CHANGES “UT83”.[dbo].[_Document57], $(vLastVer) ) AS CT // эта переменная управляет отбором
LEFT OUTER JOIN “UT83”.[dbo].[_Document57] AS T ON T.[_IDRRef] = CT.[_IDRRef];

/***** Здесь должен быть Код Алгоритма инкрементальной загрузки

ЭТОТ РАЗДЕЛ НЕ ЗАВЕРШЕН И БУДЕТ РАСШИРЯТЬСЯ В ВЛЕЖУЮЩИХ ВЫПУСКАХ

******/

//—————– 4) установка и сохранения нового значения CT-версии для следующей загрузки
CT_VER:
LOAD ‘$(vNextVer)’ as [LAST_VER_CT] AutoGenerate 1;
STORE LAST_VER_CT FROM CT_VER INTO [$(PATH)\CT_VER.txt] (txt);
DROP TABLE CT_VER;