Обработка исключительных ситуаций в Qlik Sense

Окт 27, 2021 Qlik

Обработка исключительных ситуаций в Qlik Sense происходит не так как в языках программирования. 

Здесь нет специальных конструкций языка позволяющих делать защищенный блок и обрабатывать исключение. Однако, здесь есть четыре переменные которые содержат режим ошибок скрипт и сведения об ошибках.

ErrorMode — определяет режим работы скрипта. Для Qlik Sense значение 0 это игнорирование ошибок, значение 1 или 2 — аварийное завершение скрипта загрузки данных в случае ошибки. Значение вы можете менять в скрипте загрузки.

ScriptError — ошибка последнего оператора. В это переменную записывается значение типа dual. Как текст оно равно пустой строке в случае если оператор выполнен без ошибок. Прошу обратите внимание! Это ошибка последнего оператора. То есть если ошибка произошла в предпоследнем операторе то переменная будет равна пустой строке.

ScriptErrorCount и ScriptErrorList — отвечают за общее количество ошибок в скрипте и детализацию ошибок.

TRY… CATCH… ?

Пример кода, для обработки исключительной ситуации ниже. 

// Устанавливаем ВРЕМЕННО значение ErrorMode

LET OldErrorMode = $(ErrorMode);

SET ErrorMode = 0;

// Загрузка таблицы - выполняем потенциально ошибочную ситуацию

Таблица2:

LOAD * FROM abcd;<br>LET LastError = '$(ScriptError)';

// Проверяем не произошла ли ошибка

If ('$(LastError)' <> '') Then

  // Делаем что-то если возникла ошибка

  ЖурналОшибок:

  LOAD

   '$(LastError)' as ОшибкаЗагрузки,

   'Проблема загрузки из abcd' as ОписаниеОшибки

  AUTOGENERATE 1;

  EXIT SCRIPT;

End if

// Возвращаем значение переменной ErrorMode

LET ErrorMode = $(OldErrorMode);

Это важно

Если возникла ошибка времени выполнения скрипта загрузки данных, то следует помнить о следующем:

1. Ошибку не следует просто подавлять. В случае подавления ошибки вы ее не обработали и какая то часть данных не загружена. А может быть не выполнен какой то важный оператор. В любом случае об этом никто не узнает и это будет проблема.

2. Ошибку можно записать в журнал ошибок (сделать отдельную таблицу с журналом ошибок).

3. Если ошибка возникла то может быть стоит загрузить данные из другого источника или попробовать операцию еще раз (для тех операций которые имеют разную успешность в зависимости от момента выполнения).

4. Скрипт можно завершить успешно и не продолжать загружать данные.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *