A tool for developing and testing ETL and ELT processes for automating the capture, delivery and processing of information in data warehouses on the MicroFocus Vertica platform.
script: в скриптовый язык, используемый в выражениях моделей маппинга и workflow добавлены функции isNumber, isLong, isBigInteger, isDouble, isFloat, asFloat, inStr, substr, findAll, upper, lower, trim, lTrim, rTrim.
main: для оператора "textFile" добавлено свойство "logOutput", при включении которого все записываемое в текстовый файл также выводится в консоль.
main: теперь в операторе "textFile" можно не задавать имя файла, будет организована запись в текстовый буфер, значение которого можно получить из свойства "bufferText".
main: при указании имени файла в операторе "textFile" можно задавать переменные date, time, datetime, environment и имена переменных, указанных при запуске в командной строке.
main: добавлены функции EvalMacroString (парсинг текста с переменными) и TransformFilePath (преобразования пути с учетом переменных ОС и служебных переменных Getl).
main: методы textFile не работали в режиме синхронизации, что могло привести к ошибке при записи из разных потоков.
Версия Groovy переведена на 3.0.16
models: для табличных моделей добавлены функция historyPointSourceName, которая возвращает как имя таблицы будет хранить в таблице инкрементов, свойство modelHistoryPoint, которое возвращает ссылку на общий инкрементальный менеджер к модели без привязки к таблице и метод clearModelHistoryPoints, который сбрасывает все инкрементальные точки модели в таблице инкрементов.
models: для workflow в скрипте теперь можно обращаться к результатам выполнения скрипта с указанием имени объекта, для которого был зафиксирован результат, например "result('SCRIPT 1', 'group1:object1').count".
main: при запуске с командой строки класса Getl теперь можно включить тихий режим с помощью опции "getl_verbose_mode=true". В таком режиме не будут выводиться сведения о версии Getl и загружаемых параметрах репозитория.
test: юнит тесты теперь выполняются в тихом режиме.
Добавлен оператор runGetlFile, с помощью которого можно выполнить скрипт на языке Getl из файла, который находится локально, в ресурсах проекта или репозитории. В скрипте файла автоматически будет использован базовый класс Getl, подключен автоматический импорт аннотации @Field для описания параметров скрипта, аннотации @SaveToRepository для обозначения методов генерации объектов репозитория и классов функций getl.utils.*.
main: сделан рефакторинг работы с текстовыми файлами оператором textFile. Теперь вся запись в буфер идет не в память, а в кэшируемый файл, появилось свойство deleteOnEmpty, при включении которого по окончании файл будет удален, если буфер пустой.
repository: в функцию loadRepository для repositoryStorageManager добавлен параметр softLoad, с помощью которого можно включить кэширование загрузки репозитория. При включении этого параметра вместо загрузки объектов репозитория в память будут загружены их имена, которые будут доступны при работе со списком объектов репозитория или поиске объекта по имени. При любом обращении к объекту он будет автоматически загружен в память. Используйте эту опцию, если при работе требуется видеть полный список объектов репозитория, но не требуется тратить время на загрузку их всех сразу.
main: при старте процесса ему автоматически в scriptExtendedVars передаются переменные "#REPOSITORY" с абсолютным путем к репозиторию и "#TEMPDIR" с абсолютным путем к директории временных файлов, который использует JVM. Переменные можно использовать в параметрах скриптов запускаемого workflow.
scripts: в скриптовый язык добавлены функции parseSQLDate, parseSQLTime и parseSQLTimestamp.
main: в базовом классе генератора объектов репозитория RepositorySave не корректно обрабатывалась последовательность сохранения созданных объектов, что могло привести к тому, что в репозитории сначала регистрировался объект, который ссылается на другой объект, который еще не был создан.
main: в базовом классе генератора объектов репозитория RepositorySave очищались все объекты указанного типа генерируемых объектов, даже если для их имен была задана маска. Теперь если маска указана, перед созданием будут очищаться только те объекты, которые входят в маску.
repository: можно было для объекта задать пустое имя группы, указав в имени групп две точки подряд.
threads: если внутри выполняемого потока вызывался оператор stopApp, то выполнение приложения завершалось, как будто произошла ошибка, а не штатное прерывание его работы.
repository: переработан механизм блокировки объектов репозитория при обращении к ним для ускорения загрузки объектов при загрузке репозитория или дозагрузки в ходе обращения к объектам.
getl.utils.DateUtils: добавлены функции для форматирования java.sql типов даты и времени: FormatSQLDate, FormatSQLTime, FormatSQLTimestamp и FormatTimestampWithTz.
getl.jdbc.HistoryPointManager: добавлены функции lastValueLong и lastValueTimestamp для получения значения как числа или даты-времени.
getl.jdbc.VerticaDriver: добавлена поддержка создания local temporary view.
getl.proc.FileCleaner: добавлено свойство ignoreFileRemoveError, в котором можно включить игнорирование неудачных попыток удаления файлов.
getl.csv.CSVDriver: в CSVConnection и CSVDataset добавлено свойство blobPfefix, с помощью которого можно задать префикс перед HEX последовательностью байтов для блоб полей в файле, если выключен флаг blobAsPureHex. По умолчанию используется "0x".
getl.data.Field: добавлена функция IsCapacityType, с помощью которой можно сравнить совместимость значения поля приёмника к полю источника.
getl.jdbc.JDBCDriver: для функций создания и удаления схем, таблиц, представлений и счетчиков, а так же для функции копирования из таблицы в таблицу добавлена опция ddlOnly, при указании которой формируется SQL скрипт, но не выполняется сама операция. Скрипт сохраняется в свойстве lastSqlStatement у соединения, датасета или счетчика.
getl.jdbc.JDBCConnection: добавлены функции форматирования значений с типом даты и времени в текст с учетом поддерживаемого формата соединения.
getl.csv.CSVDriver: добавлена возможность читать файлы с нестандартным разделителем записей. Ранее такие файлы можно было только записывать.
getl.vertica.VerticaTable: в опции пакетной загрузки файлов bulkLoadOpts добавлено свойство escapeChar, в котором можно задать символов экранирования специальных символов в текстах.
getl.vertica.VerticaDriver: теперь в пакетной загрузке файлов можно загружать файлы штатным парсером без экранирования специальных символов с помощью символа экранирования. Если задать разделителями полей и записей служебные символы, которые нет в текстах, то возможно загружать значения текстовых полей с переводами строк без их потери. При формировании временных файлов для пакетной загрузки в Vertica теперь задается символ обрамления поля \u0005, разделитель записей \u0006 и разделитель полей \u0007. При указании reject файла, Vertica вернет записи в том же формате, однако он будет конвертирован в текстовый формат со штатными параметрами для анализа и читабельности.
getl.data.Dataset: при импорте полей с другого датасета добавлено два параметра:
getl.salesforce.SalesForceDriver: в методы rows, eachRow, bulkUnload был добавлен параметр bulkJobId, используя который, можно забрать данные с уже завершенной Bulk Job.
В мажорной версии были существенные доработки работы с timestamp полями для поддержки наносекунд до 9 знаков, работе с blob полями JDBC источников и изменена архитектура работы моделей с менеджерами инкрементальных точек для облегчения описания правил инкрементального захвата для групп таблиц модели.