GitPedia
Home/ascrus/getl/Changelog
ascrus

ascrus/getl

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.

30 Releases
Latest: 2y ago
Минорный патч 4.18.94.18.9Latest
ascrusascrus·2y ago·December 22, 2023
GitHub

📋 Changes

  • Изменена версия Groovy на 3.0.19
  • 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).
  • # Dsl баги
  • main: методы textFile не работали в режиме синхронизации, что могло привести к ошибке при записи из разных потоков.
  • + 28 more
Минорный патч 4.18.84.18.8
ascrusascrus·2y ago·September 15, 2023
GitHub

📋 Changes

  • В ряде классов Getl стояла аннотация CompileStatic, что приводило к некорректной работе с публичными полями объектов класса из других объектов. Пока в Groovy пока идет активное исправление ошибок с этой аннотацией, решено убрать с классов данную аннотацию. Для тех мест, где требуется более высокая скорость выполнения кода, аннотация используется непосредственно для методов, содержащих такой код.
  • getl.jdbc.HistoryPointManager: в методе cloneHistoryPointManager передавался параметр connection, который не возможно склонировать под тем же именем в репозитории. Параметр connection убран из метода.
Минорный патч 4.18.74.18.7
ascrusascrus·2y ago·September 4, 2023
GitHub

📋 Changes

  • main: добавлена служебная макропеременная "#ENVIRONMENT", которая доступна при всех преобразованиях файловых путей и использовании переменных в значениях параметров скриптов.
  • script: в язык выражений и скриптов добавлены функции "validPath" и "validFilePath", которые проверяют существование пути к директорию или файлу и при отсутствии его создают.
  • main: в командной строке запуска теперь можно задавать переменные для конкретных скриптов, используемых в Workflow. Для этого используйте формат "$Script1.var1=Значение", где Script1 это simpleName класса Script1, а var1 передаваемая переменная. Переменная будет видна только при выволнении указанного скрипта в нём как внешняя переменная "scriptExtendedVars", а так же применятся для соединений и файловых серверов, вызываемых в этом скрипте.
  • logins: в StorageLogins для соединений и файловых менеджеров не корректно сохранялся пароль, если он для логина задавался как null. Вместо null сохранялась строка "null".
  • getl.jdbc.SQLScripter: расширен пул возвращаемых кодов при ошибках, для подробностей смотрите документацию на свойство exitCode.
  • getl.models.Workflows: теперь в случае ошибки в одном из скриптов шага можно продолжить выполнение следующих за этим шагом шагов, вернув в подшаге обработки ошибки в условии "true". Подчиненные шаги упавшего шага выполнятся не будут.
  • getl.proc.Executor: добавлено событие onProcessError, которое вызывается при возникновении ошибки в потоке при выключенном abortOnError и позволяет решить, нужно ли далее продолжать обрабатывать другие потоки или следует завершить работу Executor с ошибкой.
  • getl.utils.Messages: при загрузке файла ресурсов можно выключить проверку существования уже ранее загруженных сообщений и перегрузить с файла сообщения поверх.
  • + 7 more
Минорный патч 4.18.64.18.6
ascrusascrus·2y ago·August 18, 2023
GitHub

📋 Changes

  • getl.jdbc.SQLScripter: для оператора EXIT теперь можно указывать код завершения скрипта. Просмотреть код завершения можно в свойстве "exitCode". Если явно код не задан, то по умолчанию будет возвращен ноль.
  • getl.jdbc.SQLScripter: для оператора ERROR теперь заданный текст ошибки сохраняется в свойство "errorText", а в свойство "exitCode" устанавливается код завершения "-1".
  • getl.jdbc.SQLScripter: при возникновении ошибки выполнения скрипта в свойство "exitCode" устанавливается код завершения "-2".
  • getl.jdbc.SQLScripter: после вызова выполнения файла скрипта оператором "RUN_FILE" можно узнать код его завершения в переменной "sql_exit_code".
  • getl.jdbc.SQLScripter: для операторов RUN_FILE, SWITCH_LOGIN, EXIT и ERROR теперь можно в параметрах вызова использовать переменные скрипта.
  • getl.files.Manager: при обработке имен файлов и директориев могла не корректно работать функция "currentDir", если их имена содержали не латинские буквы.
  • getl.utils.Path: при компиляции маски могли не корректно формироваться регулярные выражения для поиска и сравнения имен файлов и директориев с маской, если их имена содержали не латинские буквы.
  • getl.utils.Lexer: функция scriptBuild возвращала ошибку, если параметр старта ключевого слова "start" был больше, чем общая длина списка слов.
Минорный патч 4.18.54.18.5
ascrusascrus·2y ago·August 7, 2023
GitHub

📋 Changes

  • main: добавлено свойство "getlSystemProperties", в котором можно задать переменные среды окружения, которые будут учитываться при работе с файловыми путями наравне с переменными ОС и глобальными переменными, заданными при запуске скрипта с командной строки.
  • repository: для репозиториев добавлено свойство "repositoryTags" для указания тегов, которые могут быть использованы для добавления тегов в объекты репозитория.
  • repositoryStorageManager: добавлено свойство "autoSaveRepositoryTags", с помощью которого можно включить автоматическое добавление и сохранение тегов объектов репозитория в теги репозитория. Если оно включено, то при сохранении репозитория и его объектов теги так же будут автоматически сохраняться в конфигурационный файл по пути хранения репозитория, а при чтении репозитория автоматически подгружаться из файла в теги репозитория.
  • configuration: в файл конфигурации репозитория в раздел "repository" добавлена поддержка свойства "autoSaveRepositoryTags", с помощью которого можно задать значение свойству "autoSaveRepositoryTags" у repositoryStorageManager.
  • main: объектам репозитория добавлено свойство dslSaveTime, в котором находится дата время записи файла на диск в репозиторий.
  • script: в скриптовый язык workflow и выражений маппинга моделей добавлены функции lesser и greatest.
  • main: при вызове функции parseObject.toObjectName не корректно обрабатывалось имя, если оно было null или с пробелами в начале или в конце.
  • getl.utils.StringUtils: добавлены функции GZip, UnGZip и IsGzCompressed, с помощью которых можно запаковать, распаковать и проверить на упаковку методом GZip строку.
  • + 20 more
Минорный патч 4.18.44.18.4
ascrusascrus·3y ago·May 16, 2023
GitHub

📋 Changes

  • # Getl баги
  • getl.vertica.VerticaDriver.groovy: при создании таблицы возникала ошибка, если в опции создании segmentedBy был указан ALL NODES.
  • getl.utils.Lexer: не корректно обрабатывались одиночные комментарии в тексте, если внутри них содержались /* и */.
  • getl.jdbc.SQLScripter: если в скрипте перед оператором стоял одиночный комментарий, внутри которого был многострочный комментарий, то этот оператор не выполнялся.
Минорный патч 4.18.34.18.3
ascrusascrus·3y ago·April 27, 2023
GitHub

📋 Changes

  • # Dsl фичи
  • main: добавлен оператор sql, в котором можно параметром задать имя соединения в репозитории. Ранее можно было только указать параметром объект соединения.
  • getl.jdbc.SQLScripter: добавлено свойство defaultCodePage, в котором можно задать, в какой кодировке будут считываться файлы для выполнения через функции runFile и loadFile, а так же оператор RUN_FILE. Если это свойство не задано и при считывании файла функцией будет явно задана кодировка, она станет кодировкой по умолчанию и установиться в это свойство.
  • getl.jdbc.SQLScripter: если при чтении файла скрипта функциями runFile и loadFile или оператором RUN_FILE он не находится по указанному пути, если не указано расширение, производится поиск этого файла с расширением "sql". Если путь указан относительный, то поиск файла скрипта дополнительно производится в репозитории.
  • getl.utils.FileUtils: добавлена функция FindFileByDefault, которая ищет и возвращает файл по указанному пути, проводя поиск дополнительно с расширениями по умолчанию и в репозитории, если файл по указанному пути не нашелся.
  • getl.postgresql.PostgreSQLTable: в опции создания таблицы добавлено свойство "unlogged", при включении которого будет создана не логируемая таблица в БД (см. документацию PostgreSQL по unlogged tables).
  • getl.postgresql.PosgreSQLDriver: добавлена поддержка оператора unionDataset для объединения записей источника с приёмником с помощью MERGE.
  • getl.vertica.VerticaDriver: добавлена поддержка оператора unionDataset для объединения записей источника с приёмником с помощью MERGE.
  • + 1 more
Минорный патч 4.18.24.18.2
ascrusascrus·3y ago·April 12, 2023
GitHub

📋 Changes

  • main: в объект парсинга ParseObjectName добавлено свойство subGroups, которое возвращает массивом список групп из имени объекта, где нулевым элементом будет корневая группа.
  • script: в скриптовый язык добавлены функции isTable, isView и isQuery.
  • fileman: если в copier была включена опция копирования только файлов, которые есть в истории загрузке, то при копировании таких файлов их имена снова вставлялись в историю, что приводило к ошибке дублирования уникального ключа.
  • getl.proc.flow: в метод copy добавлен параметр saveSourceFieldsInErrorsDataset, который указывает, что файл ошибок нужно писать в структуре источника. По умолчанию файл ошибок пишется в структуре приёмника.
  • getl.vertica.VerticaTable: в опции createOpts добавлено свойство privileges, в котором можно задать с помощью констант includeSchemaPrivileges и excludeSchemaPrivileges, как создаваемая таблица должна наследовать права от схемы. Если опция не указана, то таблица при создании наследует права по правилам, указанным для схемы.
  • getl.*: проведен рефакторинг всех объектов Getl для корректной выдачи имени объекта при вызове toString.
  • getl.data.Dataset: в функции CheckTableFields возникала ошибка, если в датасете источнике не находилось поле, которое было в списке эталонных полей.
  • getl.proc.Job: при работе с экземпляром Job могла возникать ошибка, если он вызывался из-под класса, который использует log4j и в области видимости Groovy находится его объект logger.
  • + 6 more
Минорный патч 4.18.14.18.1
ascrusascrus·3y ago·March 31, 2023
GitHub

📋 Changes

  • # Gradle
  • Версия Groovy переведена на 3.0.16
  • # Dsl фичи
  • 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.*.
  • + 43 more
Мажорный релиз 4.18.04.18.0
ascrusascrus·3y ago·February 21, 2023
GitHub

📋 Changes

  • models: в табличных моделях у таблиц было убрано свойство "historyPointName". Теперь вместо инкрементального менеджера в свойствах модели "incrementDatasetName" задается датасет, где будет храниться история инкрементальных точек. Для каждой таблицы модели, имеющей заполненное поле инкремента, автоматически создается локальный инкрементальный менеджер. Значение инкремента таблицы созданный менеджер хранит в "source" поле таблицы инкремента по маске "имя модели@имя таблицы модели". Если у Вас уже существуют сохраненные в таблице истории инкремента сохраненные значения под именами ранее заданных инкрементальных менеджеров репозитория, их требуется переименовать в таблице в формат указанной маски.
  • main: при запуске скрипта теперь в значениях его параметров можно использовать макропеременные "environment" (текущая среда работы) и "unittest" (текущий режим тестирования).
  • models: для работы с моделями добавлен метод "clearStoryDataset", который очищает датасет хранения истории работы с моделью.
  • models: для работы с табличными моделями добавлено свойство "incrementDatasetName", в котором можно задать датасет хранения истории инкрементальных точек при работе с моделями, метод "clearIncrementDataset" для очистки датасета истории инкрементальных точек и функция historyPointTable, с помощью которой можно получить ссылку на инкрементальный менеджер, обслуживающий таблицу модели.
  • models: в модель "MapTables" добавлена функция "findMapTable", которое позволяет найти нужную таблицу модели по её имени.
  • models: в модель "ReferenceFiles" добавлена функция "findReferenceFile", которое позволяет найти нужный файл модели по его имени.
  • models: в модель "ReferenceVerticaTables" добавлена функция "findReferenceTable", которое позволяет найти нужную таблицу модели по её имени.
  • models: в модель "SetOfTables" добавлена функция "findTable", которое позволяет найти нужную таблицу модели по её имени.
  • + 17 more
Минорный релиз 4.17.54.17.5
ascrusascrus·3y ago·February 1, 2023
GitHub

📋 Changes

  • main: добавлена поддержка SQLite баз данных операторами sqliteConnection и sqliteTable.
  • script: в язык скриптов и выражений добавлены функции asTimestamp, asDate и asTime.
  • fileman: в процессах обработки файлов события onStartProcess и onFinishProcess срабатывали вне зависимости от того, нашел ли файловый процессор файлы для обработки. Теперь они будут вызваны только, если подходящие для обработки файлы найдены.
  • getl.sqlite.*: добавлена поддержка работы с базами данных SQLite в виде классов SQLiteConnection, SQLiteTable и SQLiteDriver.
  • getl.utils.ConvertUtils: добавлены новые функции Object2Timestamp, Object2Date и Object2Time.
  • getl.test.GetlTest: добавлены функции assertNotEquals для сравнения стрингов, мапов, длительности и времени.
  • getl.proc.Flow: в функции copy при указании вычисляемых полей для map не использовалось кэширование кода расчета вычисляемых полей, если оно было включено с помощью cacheName, что приводило к увеличению потребления памяти для каждого объекта Flow.
  • getl.firebird.FirebirdDriver: если в имени базы данных был указан путь к файлу базы с использованием переменных среды, то возникала ошибка. Теперь вместо переменных в путь корректно подставляются их значения.
  • + 5 more
Минорный релиз 4.17.34.17.3
ascrusascrus·3y ago·January 15, 2023
GitHub

📋 Changes

  • getl.utils.Messages: при генерации ошибки фигурные скобочки имен объектов воспринимались как имена макро-переменных. Чтобы этого не было, имена объектов теперь пишутся в квадратных скобочках.
  • getl.jdbc.TableDataset: при вызове bulkLoadCsv для единичного файла он не загружался, если у него было не указано явно расширение.
  • getl.data.FileDataset: для файловых датасетов не корректно срабатывали функции fileNameWithExt и fileNameWithoutExt, если в имени файла стояла точка.
  • getl.proc.Flow: в функции copy при указании вычисляемых полей для map не использовалось кэширование кода расчета вычисляемых полей, если оно было включено с помощью cacheName, что приводило к увеличению потребления памяти для каждого объекта Flow, так как каждый раз генерировался новый класс для выполнения.
Минорный релиз 4.17.14.17.1
ascrusascrus·3y ago·December 15, 2022
GitHub

📋 Changes

  • getl.jdbc.SQLScripter: оператор RUN_FILE теперь если не находит файл по указанному пути, ищет так же его в файлах репозитория. При поиске в репозитории считается, что путь поиска начинается с корневого директория, даже если первым символом в пути не идет слэш и для файла без расширения добавляется расширение "sql". Если файл в репозитории найден, то он выполняется, иначе выдается ошибка. Так же остается возможность явно вызывать файлы с репозитория с префиксом в пути "repository:".
  • getl.utils.FileUtils: добавлена новая функция CreateNewFile, с помощью которой можно создать новый пустой файл.
  • getl.oracle.OracleDriver: при чтении запросов с полями типа "date" возникала ошибка некорректного приведения типов. Теперь значения полей такого типа корректно считываются и обрабатываются.
Мажорный патч 4.17.04.17.0
ascrusascrus·3y ago·November 22, 2022
GitHub

📋 Changes

  • Проведен рефакторинг механизма работы ошибок и записи сообщений в лог. Теперь тексты сообщений хранятся как шаблоны в ресурсных файлах Getl, их можно перевести ну другие языки и переключать в ходе работы Getl или указав в его конфигурационном файле. Менеджером сообщений так же могут пользоваться библиотеки шаблонов, расширяющие функциональность Getl. В планах перевод всех сообщений Getl на русский язык.
  • В модели маппинга и групповой обработки таблиц добавлена возможность указывать именованные скрипты, с помощью которых можно задать предварительные и финишные операции над источниками данных в ходе выполнения обработки данных.
  • Работа с веб сервисами переведена с штатного механизма классов Java на библиотеку Apache httpclient 5 версии. Появилась ntlm аутентификации, автоматическая распаковка gz контента. В планах поддержка post сервисов, включая работу по ssl.
  • Доработан существующий функционал Getl и исправлены некоторые ошибки (см. ниже).
  • main: в options добавлено свойство language для переключения языка сообщений и ошибок, по умолчанию используется EN (английский). Также язык можно установить в файле конфигурации getl-properties, задав в секции engine значение для language.
  • models: в свойства таблиц моделей mapTables и setOfTables добавлена поддержка именованных скриптов "scripts". Для каждой модели таблицы можно задавать шаблонизированные скрипты, которые можно обрабатывать в шаблонах обработки моделей во время работы с таблицами источника и приёмника.
  • fileman: в FileCleaner при включенном флаге onlyFromStory во время удаления файлов их имена снова писались в таблицу истории, что в ней создавало дубли и могло привести к ошибкам выполнения при следующем вызове очистки.
  • getl.data.WebServiceConnection: для файловых соединений с поддержкой веб-сервисов добавлены свойства login, password и authType, с помощью которых можно задать логин, пароль и способ аутентификации к веб-сервису. Поддерживается basic и ntlm аутентификация.
  • + 9 more
Минорный патч 4.16.34.16.3
ascrusascrus·3y ago·October 21, 2022
GitHub

📋 Changes

  • Исправлены ошибки работы с Excel файлами, имеющие не корректные ячейки;
  • Исправлены ошибки работы с JDBC таблицами, имеющими в наименовании символы, на которых теряются JDBC драйвера вендоров;
  • Исправлены ошибки обработки SQL скриптов, в которых неожиданно встречается SELECT, хотя они не возвращают набор данных;
  • Добавлено логирование работы SQLScripter;
  • Расширен функционал скриптового языка;
  • main: в options добавлено свойство sqlScriperDebug, при включении которой выполняемый код в sql начинает логировать действия над операторами, который выполняет Sql scripter. Так же эту опцию можно указать в разделе sqlscripter в параметре debug.
  • scripts: в скриптовый язык добавлены функции isNull и nullIf.
  • main: при проверке корректности имен объектов репозитория не учитывались следующие специальные символы: перенос и возврат строки, а так же табуляция. Теперь проверка корректно говорит, что таких символов в имени объекта быть не может.
  • + 5 more
Минорный патч 4.16.14.16.1
ascrusascrus·3y ago·September 26, 2022
GitHub

📋 Changes

  • Исправлены баги для JDBC источников.
  • Добавлена новая функциональность для JDBC источников.
  • getl.jdbc.JDBCConnection: добавлена функция escapedText, которая возвращает для использования в запросе текстовую константу с экранированием символов одинарных кавычек и перевода строки. Для каждого СУБД будет своя форма записи в виде SQL выражения. При использовании полученного значения с функции при подстановке в SQL скрипт, его не нужно оборачивать в одинарные кавычки.
  • getl.vertica.ReverseEngineering: при получении метаданных из служебных таблиц Vertica забирались только некоторые поля. Это не позволяло написать сложный фильтр выбора для реверса объектов. Теперь забираются все поля метаданных Vertica и их все можно использовать при фильтрации списка обрабатываемых реверсером объектов.
  • getl.h2.H2Connection: при вызове функции dropSchema, схема не удалялась, если был указан параметр cascade.
  • getl.h2.VerticaConnection: при вызове функции dropSchema, схема не удалялась, если был указан параметр cascade.
  • getl.jdbc.JDBCDriver: при получении списка таблиц с БД не возвращались служебные таблицы.
  • getl.utils.StringUtils: функция EvalMacroString при обработке текста работала с экранированием символов "$", "\\", "{" и "}" с помощью символа экранирования "\\". Так как этот символ используется при экранировании в скриптах Groovy, JavaScript и SQL, то это могло приводить к ошибкам их выполнения из-за неправильной интерпретации текста скриптов этих языков функцией. Поэтому символ экранирования теперь изменен на двойной "\~" до и после символа (то есть вместо экранирования "\\$" для игнорирования макроязыком этого символа теперь нужно писать "\~$\~".
Мажорный патч 4.16.04.16.0
ascrusascrus·3y ago·September 20, 2022
GitHub

📋 Changes

  • Добавлена поддержка работы с серверами баз данных ClickHouse через родной JDBC драйвер ClickHouse.
  • Добавлена поддержка работы с серверами баз данных SAP Hana через родной JDBC драйвер SAP Hana.
  • main: добавлена поддержка SAP Hana соединений и таблиц.
  • main: добавлена поддержка ClickHouse соединений и таблиц.
  • getl.sap.HanaConnection: добавлена поддержка соединений к SAP Hana БД.
  • getl.sap.HanaTable: добавлена поддержка работы с таблицами соединений SAP Hana БД. Есть ограничения: нет поддержки создания таблиц с полями с типом BLOB и записи в таблицы с такими полями. Чтение BLOB полей поддерживается без ограничений. Работа с полями VARBINARY типа без ограничений.
  • getl.clickhouse.ClickHouseConnection: добавлена поддержка соединений к ClickHouse БД.
  • getl.clickhouse.ClickHouseTable: добавлена поддержка работы с таблицами соединений ClickHouse БД. Есть ограничения: нет поддержки чтения полей временных таблиц и запросов, нет поддержки операций обновления и удаления записей.
  • + 1 more
Минорный патч 4.15.24.15.2
ascrusascrus·3y ago·September 14, 2022
GitHub

📋 Changes

  • Добавлена поддержка динамических библиотек шаблонов, которые могут хранится в директории репозитория и подгружаться при старте инстанса Getl. Классы подгружаемых библиотек шаблонов могут использоваться для вызова в шагах workflow, в скриптах шагов workflow и выражениях маппинга моделей.
  • Реализована поддержка автоматизации работы с master-detail данными, где источник содержит в себе поля, внутри которых подчиненные структуры с данными. В etl.copy можно описать дочерние датасеты, указав им поле источника, с которого они будут получать данные. Для поддержки master-detail для пользовательских шаблонов расширены модели setOfTables и MapTables, чтобы можно было таблицам модели задавать их родительский датасет источник.
  • main: в язык выражений Getl добавлены функции parseProperties и text2List.
  • etl: в методы copy, rowsTo и rowsAllTo добавлены события onBeforeWrite и onAfterWrite.
  • models: в модели setOfTables и mapTables для таблиц модели добавлены свойства parentDataset и parentLinkFieldName, с помощью которых можно указать, что датасет является подчиненным для другой таблицы модели и берет данные с поля главного датасета.
  • etl: в операторе copyRows теперь можно указать маппинг записи полей из источника в приёмник для дочерних датасетов childs, если у них указан источник в linkSource. Поддерживаются все возможности маппинга, такие как автоконвертация типов, автосвязывание по именам, виртуальные поля и язык выражений.
  • main: в пути к локальным файлам теперь можно указывать служебную переменную {#REPOSITORY}, в которую будет подставляться путь до репозитория объектов Getl, если он задан.
  • models: в пользовательском коде workflow теперь можно напрямую обращаться к шагам и скриптам с помощью встроенных функций step('ИмяШага') и script('ИмяСкрипта').
  • + 13 more
Мажорный патч 4.15.14.15.1
ascrusascrus·3y ago·August 23, 2022
GitHub

📋 Changes

  • main: добавлен новый тип датасетов arrayDataset и соединений arrayDatasetConnection. Датасет может иметь только одно поле и возвращать по нему записи из локальных присоединенных данных.
  • main: добавлена поддержка работы с локальными данными для файловых датасетов csv, json, xml и yaml. Для присоединения локальных данных для парсинга используется свойство localDatasetData. Данные должны быть того формата, который ожидается при чтении записей в датасете.
  • main: добавлен новый оператор attachToDataset. Он позволяет указать локальные данные как источник для датасета (если он поддерживает интерфейс AttachData).
  • main: добавлен новый оператор attachToArray. Он позволяет указать указанный список значений как источник для arrayDataset.
  • etl: в оператор copy расширена поддержка записи в дочерние датасеты приёмника. Теперь для дочерних датасетов приёмников (childs) можно задать датасет источник в свойстве linkSource. Если данные хранятся в поле источника и датасет источник поддерживает интерфейс AttachData, то можно включить автоматическое связывание датасета с полем, указав его в свойстве linkField.
  • etl: для оператора copy в выражения виртуальных полей добавлена поддержка вызовов всех базовых функций работы с строками, числами, датами и парсинга xml, json и yaml из текстов (см класс utils.sub.BaseUserCode).
  • models: в скрипты шагов workflow добавлена поддержка функций парсинга xml, json и yaml из текстов (см класс utils.sub.BaseUserCode).
  • etl: для copy не правильно назначалось событие finalizing, которое переназначало событие prepare.
  • + 8 more
Минорный патч 4.14.104.14.10
ascrusascrus·3y ago·August 8, 2022
GitHub

📋 Changes

  • Проведен рефакторинг кода для совместимости с Java 17. Переписаны вызовы deprecated функционала, помеченного в Java 11.
  • Доработан функционал событийной модели workflow, чтобы события можно было указывать как в тексте инициализации шагов, так и с кода Groovy.
  • В файловые процессы добавлено событие onProcessTrackCode для отслеживания хода работы процесса.
  • models: Теперь в workflow можно так же задавать события прямо в коде Groovy с помощью функции events, как это сделано для инициализации шагов.
  • fileman: в процессах copier и processing теперь можно указать код для события отслеживания хода обработки файлов. В Closure событие будут передаваться два параметра:
  • Long count_files - общее количество файлов для обработки;
  • Long processed_files - обработанное на текущий момент количество файлов.
  • В эталонных файловых моделях не создавались директории, если был включен флаг их создания.
  • + 1 more
Минорный патч 4.14.94.14.9
ascrusascrus·3y ago·July 29, 2022
GitHub

📋 Changes

  • Расширена функциональность шаблонов Workflow в EasyPortal в скрипты моделей добавлена поддержка языка событий, который позволяет описывать события для всего шаблона или таблиц модели, с которой он работает.
  • Расширена функциональность захвата данных для построения эталонных моделей данных Vertica. Теперь можно указать из трех типов захвата данных: ETL (простое копирование), BULK (пакетное копирование через создание промежуточных CSV файлов) и EXPORT (копирование данных между кластерами Vertica с помощью оператора EXPORT TO VERTICA).
  • Исправлены ошибки при работе с файловыми процессами и веб сервисами.
  • models: в скриптах шагов моделей Workflow теперь можно задавать события для скриптов в формате: events('ИмяСкрипта') { event('Событие') { ... }; event('Таблица модели', 'Событие') { ... } }. При разработке шаблонов теперь в скриптах Getl доступно свойство scriptEvents, в котором будут содержаться все заданные в workflow события для этого скрипта.
  • models: в моделях эталонных данных ReferenceVerticaTables теперь можно указывать, каким способом скопировать эталонные данные с источника Vertica (ETL, BULKLOAD или EXPORT) и нужно ли использовать пакетную загрузку (bulkLoad), если исходные данные забираются не с Vertica источника.
  • etl: в etl процессы записи данных добавлен параметр bulkNullAsValue, в котором можно задать, как кодировать null значения, если используется пакетная загрузка данных в приёмник.
  • fileman: в файловых процессах могла возникнуть ошибка NullPointerException при логировании работы, если процесс запускался без указания владельца процесса.
  • getl.h2.H2Table: пакетная загрузка файлов теперь поддерживает опцию nullAsValue.
  • + 8 more
Минорный патч 4.14.84.14.8
ascrusascrus·3y ago·July 12, 2022
GitHub

📋 Changes

  • В Groovy версии 3.0.11 и 4.* изменили механизм автоопределения типов переменных в блоке if, где Groovy пытается автоматически назначить тип переменной в коде при срабатывании условия, если в условии было сравнение переменной с помощью instanceof. В случаях, когда в условии if использовалось несколько instanceof с помощью "или", в блоке кода if возникала ошибка приведения типа переменной. Ошибка заявлена в Groovy, но пока не исправлена. Getl был доработан так, чтобы для таких условий в блоке кода if переменные всегда приводились явно к нужному типу и ошибка не возникала.
  • models: для referenceVerticaTable в метод createReferenceTables добавлен параметр listSchemaGrants, в котором дополнительно можно указать, для каких пользователей и ролей должен быть разрешен доступ к эталонным данным в Vertica.
  • main: при запуске скрипта из под Groovy консоли не был включен режим unit test mode.
  • models: модели эталонных файлов и таблиц могли работать в выключенном режиме unit test mode, что могло привести к потере данных на прод стенде.
  • getl.data.Dataset: в функцию resetFieldToDefault добавлен параметр очистки признака полей в партиции.
  • getl.data.Dataset: добавлены функции movePartitionFieldsToFirst и movePartitionFieldsToLast, которые переносят все поля партиции в начало или конец списка полей датасета.
  • getl.hive.HiveTable: в опции создания таблицы createOpts добавлены свойства serdeproperties, fieldsTerminatedBy, linesTerminatedBy, escapedBy и nullDefinedAs.
  • getl.hive.HiveDriver: переработан механизм загрузки файлов bulk load. Ранее csv файл копировался на hdfs, загружался в локальную временную таблицу и из неё вставлялся в таблицу приёмника. Теперь скопированный на hdfs файл подключается как внешняя таблица и с неё вставляются записи в таблицу приёмник.
  • + 6 more
Минорный патч 4.14.74.14.7
ascrusascrus·3y ago·June 28, 2022
GitHub

📋 Changes

  • Была доработана поддержка работы с данными топиков Kafka. Однако на чтение топиков еще возникают проблемы, работа будет продолжена далее.
  • Доработана работа с алиасами для полей иерархических датасетов XML, JSON, YAML, Kafka, чтобы можно было ссылаться для определенных полей на другие структуры полей, которые находятся выше зоны видимости полей по умолчанию.
  • Доработана работа файлового процессинга, теперь можно задать максимальное время обработки файла, по истечении которого обработка будет прервана. Это может помочь в случаях, когда парсер файла завис или ушел в бесконечный цикл.
  • models: теперь для моделей работы с данными в свойстве датасета истории ведения истории модели "storyDatasetName" можно использовать переменные, определенные в модели.
  • models: в коде условия, инициализации и финализации для workflow моделей теперь можно напрямую обращаться к атрибутам модели с помощью переменной modelAttrs.
  • etl: для операторов copy, rowsTo и rowsAllTo добавлено событие onPostProcessing, которое вызывается после обработки записей источника, но до запуска пакетной загрузки подготовленных записей в приёмник с помощью bulk load.
  • etl: для операторов rowsTo и RowsAllTo добавлены события OnPrepare, OnFinalizing и OnBulkLoad. OnPrepare вызывается до обработки записей источника, OnFinalizing после завершения всех работ и OnBulkLoad перед запуском пакетной загрузки записей в приёмник с помощью bulk load.
  • fileman: при обработке файлов с помощью оператора processing теперь можно вызвать внутри кода обработки файла с помощью переданной управляющей ноды метод abortProcessing, который пометит файл как ошибочный, но не прекратит дальнейшую обработку файлов, как метод throwError.
  • + 14 more
Минорный патч 4.14.64.14.6
ascrusascrus·4y ago·May 11, 2022
GitHub

📋 Changes

  • Обновлена поддержка JDBC драйвера PostgreSQL до версии 42.3.5.
  • Обновлена поддержка JDBC драйвера Vertica до версии 11.1.1-0.
  • getl.postgresql.PostgreSQLConnection: добавлено свойство "dateStyle", которое устанавливает для текущей сессии формат загрузки и выгрузки полей date/timestamp в текстовые файлы.
  • getl.postgresql.PostgreSQLTable: добавлена поддержка пакетной загрузки файлов с помощью метода "bulkLoad". В "bulkOpts" можно указать формат файлов (txt или csv) в "format", условие для записей в "where" и перечислить список полей с преобразованием пустых строк в NULL и сохранением пустых строк в "forceNotNull" и "forceNull". Для пакетной загрузки используется SQL оператор COPY PostgreSQL. Поддерживается загрузка локальных csv файлов, в том числе упакованных в gz формате. Поддерживается загрузка файлов с полями массивами в формате "{элемент1,элемент2}" и blob полями. Если файл записан в неподходящем формате (включен escaped или количество полей не совпадает с количеством полей таблицы или у CSV файла другие скобки обрамления массива), то файл автоматически переконвертируется в нужный формат до загрузки в БД.
  • getl.utils.DateUtils: добавлены функции Date2SQLDate, Date2SQLTimestamp и Date2SQLTime, с помощью которых можно перевести стандартный Java Date тип в java sql типы. Добавлены функции CurrentSQLTimestamp и CurrentSQLDate для получения текущей даты и времени в типах java.sql.
  • getl.jdbc.JDBCDriver: улучшена запись значения в поля с типом array. Теперь Getl по "arrayType" поля определяет, какой тип массива должен быть сгенерирован для вызова записи в JDBC драйвере и корректно передает значение в подходящем типе массива.
  • getl.utils.ListUtils: добавлена функция List2Array, которая преобразует List в массив объектов указанного типа.
  • getl.utils.WebUtils: добавлена функция PingHost, которая проверяет доступность хоста по указанному порту.
  • + 8 more
Минорный патч 4.14.54.14.5
ascrusascrus·4y ago·April 25, 2022
GitHub

📋 Changes

  • models: не работали переменные ОС при указании в строке распаковки архива для моделей referenceFiles.
  • getl.utils.FileUtils: добавлена функция AddExtension, которая добавляет указанное расширение к имени файла, если у него отсутствует расширение.
  • getl.utils.FileUtils: добавлена функция JarPath, которая возвращает путь, где хранится указанный класс или jar файл, в котором он находится.
  • getl.utils.Path: для функции variable не было доступно в переменных свойство "regular".
  • getl.utils.Path: при сборе текстового описания из path не корректно обрабатывался формат переменной, если в нем был символ "\".
Минорный патч 4.14.44.14.4
ascrusascrus·4y ago·April 6, 2022
GitHub

📋 Changes

  • models: в workflow не работала функция execute, если в неё передавались параметры include_steps или exclude_steps.
  • getl.proc.Flow: в функции copy возникала ошибка, если в приёмнике не были определены поля.
Минорный патч 4.14.34.14.3
ascrusascrus·4y ago·April 1, 2022
GitHub

📋 Changes

  • Версия Groovy переключена на 3.0.10.
  • logging: добавлено свойство printErrorToConsole, при включении которого все сообщения с уровнем severe дублируются в стандартную консоль вывода. Опцию можно включать в командной строке как getlprop.logging.printErrorToConsole=true.
  • models: у моделей изменены классы хранения атрибутов и переменных с HashMap на LinkedMap, чтобы при сохранении моделей в файлы конфигурации они не терялись, если задано null значение.
  • getl.utils.Logs: добавлено свойство printErrorToConsole, при включении которого все сообщения с уровнем severe дублируются в стандартную консоль вывода.
  • getl.utils.StringUtils: добавлена функция CurStrByLines, с помощью которой можно обрезать текст до указанного количества строк или размера.
  • getl.proc.Flow: не корректно обрабатывался маппинг полей приёмника в методе copy, если у них вместо поля источника стоял null и они должны были быть исключены из обработки процесса копирования.
  • getl.csv.CSVDriver: если в параметрах методов значения числовых показателей были переданы строкой, то возникала ошибка.
  • getl.dbf.DBFDriver: если в параметрах методов значения числовых показателей были переданы строкой, то возникала ошибка.
  • + 12 more
Мажорный патч 4.14.24.14.2
ascrusascrus·4y ago·March 11, 2022
GitHub

📋 Changes

  • Добавлен интерфейс получения версии текущего приложения VersionInfo.
  • getl.files.Manager: добавлено свойство useDateSizeInBuildList, которое указывает, что при поиске новых файлов надо учитывать в истории их длину и время создания.
  • getl.dbf: добавлена работа с DBF файлами на чтение с помощью DBFConnection и DBFDataset. Поддерживается чтение форматов DBF до DBASE 7, FoxPro и Visual FoxPro.
  • getl.files.Manager: добавлено свойство checkDateSizeFile, при включении которого файл не считается обработанным в истории, если у него не совпадает размер или время изменения.
  • getl.proc.Flow: в copy теперь можно в map указывать выражения и вычисляемые поля по синтаксису, который поддерживается в GenerationUtils.GenerateCalculateMapClosure (выражения указываются в ${...}, обращение к полям источника и к вычисляемым полям внутри выражений идет как source.поле, к внешним переменным processVars как vars.переменная, вычисляемые поля определяются в именах приёмника с звездочкой спереди, как *выч_поле1, где можно задать последовательность расчета таких полей с помощью количества звездочек, например **выч_поле2 будет расчитано после *выч_поле1, а значит может на него ссылаться.
  • getl.utils.MapUtils: добавлена функция RemoveNullValues для удаления в словаре ключей, у которых в значениях стоит null.
  • getl.tfs.TFD: при каждом новом создании датасета через функцию Dataset, создавалась новая база данных TDS в памяти.
  • getl.proc.Executor: при shutdown виртуальной машины не отслеживались запущенные Executor потоки. Теперь автоматически потокам посылается сигнал завершения, а ждущие на выполнения в очереди потоки снимаются с работы.
  • + 1 more
Минорный патч 4.14.14.14.1
ascrusascrus·4y ago·February 20, 2022
GitHub

📋 Changes

  • main: добавлена возможность изменять свойство unitTestMode, чтобы можно было в юнит тестах отключить выполнение блока ifUnitMode в скриптах шагов workflow.
  • getl.data.Dataset: добавлена функция fieldValues, которая возвращает список значений указанного поля записям датасета.
  • getl.files.Manager: добавлена возможность изменять свойство isTempLocalDirectory, чтобы указать файловому менеджеру, является ли локальная директория временной и должна быть уничтожена после завершения работы программы.
  • getl.utils.FileUtils: добавлен метод AppendToFile, с помощью которого можно данные файла дозаписать в конец существующего другого файла.
  • getl.utils.FileUtils: в функцию TransformFilePath добавлена поддержка служебной переменной {#TEMPDIR}, в которой будет путь хранения временных файлов JVM. Если требуется использовать путь хранения временных файлов в каталоге, определенном для пользователя, используйте {TEMP}.
  • getl.utils.LockManager: доработан менеджер блокировок для более точной блокировки объектов по именам.
  • getl.xml.XMLParser: создан свой парсер XML на базе стандартного с поддержкой тихого режима, чтобы не выводить все сообщения по ошибкам каждой записи в лог.
  • getl.xml.XMLDriver: в обработке файлов XML теперь используется парсер getl.xml.XMLParser.
  • + 6 more
Мажорный патч 4.14.04.14.0
ascrusascrus·4y ago·February 13, 2022
GitHub

📋 Changes

  • Getl переведен на Java 11. Более младшие версии Java теперь не будут поддерживаться. В Maven теперь будет выкладываться jar на 11 версии Java.
  • В ближайшем времени будет создана клон ветка dev_groovy_4, в которой будет осуществляться перевод Getl на Groovy 4-ой версии. После успешного перевода и вывода в релиз она станет основной в разработке, а ветка developer переименована в archive_groovy_3 и заморожена в разработке.
  • В ближайшем времени будет выложена ссылка на портал управления данными, который позволяет производить полный цикл разработки, тестирования и промышленной эксплуатации захвата, доставки и обработки данных в источниках. В портале используется язык управления данными Getl, на котором можно писать собственные библиотеки повторно используемых шаблонов. Продукт разрешается использовать в коммерческих целях в рамках свободной Community редакции как десктопное приложение.
  • models.workflow: добавлена функция listScripts, которая возвращает список всех скриптов, указанных в workflow.
  • main: для командной строки добавлены параметры include_steps и exclude_steps, в которых можно указать список шагов, которые нужно выполнить или пропустить.
  • model.workflows: для execute можно указать список шагов, которые нужно выполнить или пропустить.
  • fileman: для процессов работы с файлами теперь в ходе обработки директориев в логе публикуется уведомление каждые 100 обработанных директориев. Для каждые 10% обработанных файлов
  • getl.files.Manager: не корректно обрабатывался параметр limitDirs при построении списка файлов.
  • + 4 more