Продукты EasyData
История изменений EasyPortal
Хроника развития продукта по версиям: добавление и изменение функций,
исправление ошибок, оптимизация работы.
Версия 2.04
EasyWebServer
Добавление функций
- При выгрузке репозитория в архив теперь можно указать маски директориев и файлов, которые следует исключить из архива. Для этого нужно в конфигурационном файле репозитория "getl-properties.conf" описать исключения в секции "archive { exclude=['директорий1/*', 'директорий2/директорий3/файл1', '*.dat'] }".
- Добавлена поддержка генерации DDL скриптов для синхронизации структуры таблиц БД с описанием их структуры в репозитории для следующих СУБД: MSSQL, Oracle, SQLite.
- При вызове окна линковки датасетов источника с приёмником в модели маппинга теперь можно задавать укороченную маску имени: "маска источника" и ":маска приёмника", где недостающие части будут интерпретироваться как исходное имя "{name}".
СУБД
Объекты репозитория
- При чтении полей таблиц не корректно проставлялся порядковый номер поля в первичном ключе, если оно в нем участвовало.
- При генерации скрипта синхронизации структуры таблиц БД Vertica использовался не корректный синтаксис добавления столбца с ограничением "CHECK".
EasyLoader
Добавление функций
- В шаблон SynchJDBCTableStructure добавлен параметр "recreate_tables", при включении которого при несовпадении структуры таблицы просто будут пересозданы заново с потерей данных.
Версия 2.03
EasyWebServer
Добавление функций
- Во всех гридах можно двигаться с помощью стрелок клавиатуры (кроме EasyWorkspace).
- В гридах можно по правой кнопке вызвать пункт "Выбрать все".
- В датасетах теперь можно мышкой изменять порядок полей.
- При сохранении эталонных данных таблиц из Vertica другой среды выполнения теперь можно для неё задать логин, под которым будет идти копирование данных с источника.
- В редакторе таблиц JDBC появилась вкладка "DDL", в которой можно посмотреть скрипт создания таблицы.
- При выборе в гриде JDBC таблиц теперь можно в меню операций вызвать процедуру сравнения их структуры в репозитории со структурой в БД и сгенерировать скрипт приведения структуры таблиц БД к структуре репозитория. Генерация DDL скриптов протестирована для следующих СУБД: H2Database, Firebird, MySQL, PostgreSQL, Vertica.
Исправление ошибок
- В меню функций эталонных таблиц Vertica при вызове пункта создания эталонных таблиц вызывался режим очистки исходных таблиц.
- При вызове сохранения эталонных данных из таблиц Vertica другой среды выполнения возникала ошибка.
- При вызове любого диалогового окна режимов эталонных данных таблиц Vertica, окна не закрывались после завершения операции.
- Не работала распаковка "7z" архивов в файлах репозитория.
СУБД
Объекты репозитория
- Для всех РСУБД доработан механизм обрамления имен объектов БД с учетом ключевых слов сервера, которые используются в дополнение к словам ANSI SQL.
- Для Firebird включена поддержка "IF EXISTS" и работа с CLOB полями.
- Для Firebird теперь используется другая функция чтения текущего времени, так как текущая не работает в 4 версии Firebird.
- Для Oracle версии 23 включена поддержка "IF EXISTS" и "IF NOT EXISTS".
- Для SQLite включена поддержка "IF EXISTS" и "IF NOT EXISTS".
Файловый источники
- Исправлена ошибка чтения записей из "xls" Excel файлов формата 2003.
Файловые менеджеры
- Для файлового менеджера HDFSManager добавлены свойства "connectionTimeout" и "maxRetryOnError", с помощью которых можно задать таймаут ожидания соединения и количество попыток соединения.
Модели
- В MonitorRules генерировалась ошибка вместо предупреждения, если в таблице состояния правил были правила, не описанные в модели.
Скриптовый язык Getl
- Добавлены функции isNumber, isLong, isBigInteger, isDouble, isFloat, asFloat, inStr, substr, findAll, upper, lower, trim, lTrim, rTrim, EvalMacroString, TransformFilePath.
EasyLoader
Добавление функций
- В шаблон rdbms.CopyToTables добавлены события "bulk_load" и "partition_bulk_load", которые позволяют установить параметры пакетной загрузки файлов данных из источника, кэшированных в файлы.
- Сделан рефакторинг шаблона repository.SynchJDBCTableStructure. Теперь требуется выбрать соединение, на которое указать для поиска JDBC таблиц список масок. Каждая из таблиц, подходящей по имени под маски будет проверена на существование и совпадение структуры в БД сервера. При отсутствии таблицы будет сгенерирован DDL скрипт создания таблицы, несовпадении структуры сгенерирован DDL скрипт изменения структуры таблицы. На текущий момент шаблон полностью поддерживает генерацию скриптов смены структуры таблиц для H2Database, Firebird, MySQL, PostgreSQL и Vertica. Для остальных СУБД поддерживается добавление и удаление колонок, смена NULLABLE и DEFAULT ограничений.
- Для шаблона vertica.replication.CreateLogTables в таблицы репликации логов добавлено поле времени вставки записи в таблицу "_EL_LOADED_". Теперь репликация при инкрементальной обработке использует это поле.
- Для шаблона vertica.replication.CreateLogTables добавлен параметр "processing_lag", в котором можно задать отставание репликации в секундах от текущего времени.
Исправление ошибок
- При работе с таблицами Impala и Hive могла возникнуть ошибка, если поле таблицы имело зарезервированное имя "METHOD".
- Исправлена ошибка шаблона vertica.impala.CopyToImpala с сообщением "invalid syntax BEGIN BLOCK".
- В шаблоне rdbms.CopyToTables не пересоздавались таблицы в БД при несовпадении со структурой полей репозитория при включенном параметре "recreate_destination_table".
- В шаблонах files.CopyFiles и files.ProcessDatasetFiles могла возникнуть ситуация, когда при многопоточном копировании файлов по группам атрибутов один из потоков заканчивал работу и удалял временную директорию, в котором другие потоки еще работали, что приводило к ошибке "Директорий или файл не найден".
- В шаблоне vertica.replication.LoadLogTables возникала ошибка "Неизвестные атрибуты copy_master и copy_replication".
Версия 2.02
EasyWebServer
Добавление функций
- В workflow теперь можно при отладке задачи выбрать среду выполнения репозитория.
- В документацию библиотеки EasyLoader добавлен раздел Getl, в котором описаны функции для языка выражений, используемых в маппинге полей таблиц моделей и операторы для языков скриптов workflow и SQL.
Исправление ошибок
- В моделях групп таблиц и маппинга таблиц нельзя было очистить поля таблиц истории и инкремента, если они уже были заданы. После сохранения модели и повторном её открытии эти значения все равно оставались заполненными.
- При выполнении поиска объектов можно было еще раз нажать кнопку "Поиск" в ходе работы.
- В моделях маппинга таблиц не работала кнопка вызова редактора маппинга.
Версия 2.01
EasyWebServer
Добавление функций
- На объектах репозитория по правой кнопке мыши можно из меню вызвать просмотр зависимостей выбранного объекта. Это позволяет узнать, в каких моделях и workflow объект участвует и открыть эти объекты на редактирование.
- В экспорт датасетов добавлена возможность задать правило обработки, если датасеты уже существуют в группе назначения. Теперь экспортируемые датасеты можно проигнорировать, если они уже существуют или переписать поверх.
Исправление ошибок
- Для соединений во вкладке "Логины БД" нельзя было задать логины без паролей.
- Для датасетов типа "Query" не удавалось перечитать список полей.
- Для таблиц Vertica при добавлении в них полей они не были доступны в полях выбора полей вкладок "Создание" и "Обновление".
EasyLoader
Добавление функций
- Для Vertica добавлен шаблон replication.CopyFromVertica, с помощью которого можно заполнить на текущем стенде данные реплицируемых таблиц и таблиц логов репликации с другой БД Vertica. Шаблон очищает исходные таблицы в текущей БД и после копирования устанавливает точки репликации из копируемой БД. Шаблон не работе в среде выполнения "prod", чтобы случайно при запуске не стереть данные на промышленном стенде. При работе шаблона можно с помощью атрибутов в модели задать для таблиц правила копирования записей для реплицируемых таблиц и для таблиц логов репликации. Использование этого шаблона позволяет на среду разработки или тестирования перенести данные с промышленной БД для отладки и доработки репликации по реальным данным.
- Для Vertica в шаблон copy.CopyToVertica добавлены события before и after.
Версия 2.00
В этой версии существенно переработан интерфейс работы портала с пользователем. Для корректной работы пользователям рекомендуется переоткрыть вкладку работы с порталом в браузере, если на момент обновления сервера она была открыта или нажать SHIFT+F5 для сброса кэша страницы и её перечитки.
EasyWebServer
Добавление функций
- Для глобальных переменных среды в панели администрирования добавлена возможность описать назначение переменной.
- В дереве объектов репозитория в меню по правой кнопки мыши добавлена возможность вызова поиска объектов репозитория по маске имени или маске описания объекта. Найденные объекты можно открывать для просмотра и редактирования. Имена объектов можно искать в формате "МаскаИменияГрупп:МаскаИмениОбъекта". Так же можно указать просто маску имени объекта без имени групп и двоеточия, тогда объекты будут искать по всем группам.
- В модель эталонных таблиц добавлена возможность поиска таблиц модели по имени.
- Для соединений с поддержкой веб-сервисов (JSON, XML и YAML) добавлено свойство "checkCertificate", с помощью которого можно отключить проверку валидности сертификата при подключении по протоколу https.
- Для соединений к РСУБД PostgreSQL добавлено свойство "caseSensitiveFields". Если оно выключено, то при запросах к таблицам этого сервера имена объектов приводятся к нижнему регистру (если они не содержат символов, которые требуют заключения в кавычки). Если свойство включено, то имена объектов в запросах будут указаны в двойных кавычках с учетом их регистра написания, что потребует их полного совпадения с регистром имен объектов, указанных при создании в БД.
- Для таблиц PostgreSQL теперь можно задавать enum поля. Для этого нужно поставить такому полю тип STRING, установить длину и в extended указать в атрибуте "postgresql_enum_type" имя созданного в БД enum типа. При создании таблиц поле будет создано с указанным типом enum.
- В панели грида просмотра списка объектов группы добавлена кнопка "Теги", с помощью которой можно задать нужные теги группе выбранных в гриде объектов.
- В файлах репозитория теперь можно загрузить и развернуть архив.
- В workflow теперь можно добавить на шаг подчиненный шаг "ERROR", в котором во вкладке "Условие" написать булевое выражение о необходимости продолжения работы шагов задачи при возникновении ошибки в выполняемом шаге. В случае возврата "true" подчиненные шаги выполняемого шага выполнятся не будут, а станут выполняться следующие шаги на том же уровне шага, в котором произошла ошибка (поэтому добавление "ERROR" в корневой "STEP 1" не имеет смысла).
- При запуске workflow теперь можно передавать переменные командной строки для конкретного выполняемого скрипта в формате "vars.$ИмяСкрипта.переменная=значение". Например, при выполнении workflow, в котором используется скрипт шаблона с классом под именем CopyToTables, требуется исключить таблицы. Для этого нужно передать параметр: "vars.$CopyToTables.exclude_list=Группа1.группа2:Таблица1,Группа1.группа2:Таблица2".
- Для соединений и файловых менеджеров теперь в текстовых полях указания хоста, логина, пароля и т.д. можно использовать не константы, а переменные. Например, можно описать соединение с host: {host}, database: {database}, login: {login}, password: ${password} (для того, чтобы система поняла, что это не пароль константа, а переменная, нужно использовать полный синтаксис указания переменных ${переменная}). При старте workflow нужно будет задать переменные в переменных workflow или же в аргументах командой строки как "vars.$CopyToTables.host=ip" (где CopyToTables имя класса скрипта шаблона в Workflow) и т.д.
- Добавлена служебная переменная "#ENVIRONMENT", которая возвращает имя текущей среды выполнения. Переменную можно использовать в файловых путях и скриптовом языке.
Изменение функций
- Изменен цвет активной вкладки открытого редактора объекта для более визуального выделения среди всех вкладок открытых объектов репозитория.
- Переработано отображение имен объектов во вкладках открытых редакторов. Теперь в тексте вкладки отображается тип объекта (C-соединение, D-датасет, S-sequence, I-инкрементальная точка, MT-модель групп таблиц, MM-модель маппинга, MR-модель мониторинга, MF-модель эталонных файлов, MV-модель эталонных данных Vertica, W-workflow, F-файл) и его имя без имени группы. Полное имя объекта отображается в редакторе справа сверху.
- Для полей датасетов с типом NUMERIC убрано обязательное поле точности, а для полей с типами BLOB и TEXT теперь не требуется обязательное указание длины поля.
- Для полей датасетов DBF файлов убрано свойство "NOT NULL" как не поддерживаемое.
Исправление ошибок
- При удалении репозитория из списка в панели администрирования возникала ошибка при попытке переключения в дерево репозитория.
- Если в панели администрирования для репозитория была объявлена переменная среды и на неё ссылались файловые соединения или файловые менеджеры в пути, то при попытке их открытия на редактирование происходила ошибка.
- При запуске workflow для отладки передавались только переменные среды, указанные для репозитория в панели администрирования без переменных, заданных для репозитория в глобальных переменных панели.
- При попытке импорта репозитория в панели администрирования, который ссылался на не заданные переменные среды в портале или с некорректной лицензией происходила ошибка импорта и он не появлялся в списке репозиториев. Теперь такой репозиторий импортируется, но не активируется до исправления ошибки.
- При чтении списка полей таблиц PostgreSQL не корректно определялась длина для полей, имеющих enum тип.
- В workflow редактор map полей шаблонов для пустых значений списка показывал null, что при повторном сохранении значений редактора в параметр шаблона подставляло текстовое значение "null".
- В workflow во вкладке "Отладка" не удавалось удалить переменную запуска, если она была создана с пустым именем, и после создания была сразу нажата кнопка "Удалить".
- При создании файла в файлах репозитория открывался редактор и сразу предлагалось выйти, если файл не имел расширения. Теперь такой файл создается без открытия редактора.
- Если при чтении полей источника в датасете происходила ошибка, то надпись "Загрузка" продолжала блокировать интерфейс и не давала работать дальше.
- При выборе на вкладках пункта меню "Закрыть все" или при переключении на панель администрирования не происходил запрос по изменениям в открытых редакторах вкладок объектов репозитория.
EasyLoader
Добавление функций
- В шаблон files.CopyFiles добавлено свойство "hide_when_copy", при включении которого на приёмник копируется файл с временным расширением и после успешного копирования он переименовывается в оригинальное имя. Это дает возможность гарантировать корректный захват файла другим источником только после его полной записи.
- В шаблон vertica.CaptureData добавлены параметры use_bulkload и bulk_escaped, с помощью которых можно управлять пакетной загрузкой данных с источника и включать экранирование символов в промежуточных текстовых файлах.
- В шаблон rdbms.CopyToTables добавлены атрибуты "create" и "drop", с помощью которого можно задать опции для создания и удаления таблиц в приёмнике, аналогичные опциям во вкладках "Создание" и "Удаление" в редакторе таблицы.
- Для вкладки "Скрипты" в моделях теперь допускается указывать для выполнения не только SQL команды, но скрипты, хранящиеся в файлах репозитория. Для этого нужно в скрипте написать "#Путь/Имя файла.sql".
- В шаблоне rdbms.ExecPatternSql добавлена поддержка типов скриптов "exec" и "error", в котором можно задать скрипт для выполнения над таблицей модели и скрипт обработки возникшей ошибки. Для "error" скриптов доступна переменная "error_text". Если скрипт "error" возвращает код возврата 1 с помощью команды "EXIT 1", то шаблон продолжает выполнение с другими таблицами модели и не прекращает работу. Так же можно в скрипте "init" вернуть код возврата 1 и работа над текущей таблицей будет остановлена.
- В язык скриптов Getl для workflow и выражений в моделях добавлены функции "lesser" и "greatest" аналогично SQL функциям.
- В случае возникновения ошибок при чтении записи CSV файла теперь в дамп файл будет записываться подробная информация по структуре полей датасета и их значениям в читаемом файле.
- Во все шаблоны многопоточной обработки данных по моделям добавлено свойство "continue_on_error", при включении которого при возникновении ошибки при обработке таблицы модели работа будет продолжена над другими таблицами.
- В шаблон CopyToTables добавлена поддержка переменных между вызываемыми скриптами и процессингом таблиц модели. Например, в скрипте "init" можно рассчитать переменные требуемого периода обработки таблицы и далее их использовать в атрибуте "read.where" или в скрипте "query", если он является источником таблицы модели. Так же эти переменные будут доступны в датасете чтения списка партиций.
Изменение функций
-
Шаблоны репликации Vertica:
- Убраны типы репликации OLD_NEW и OLD_NEW_EMPTY как избыточные.
- Шаблон vertica.replication.CreateLogTables теперь генерирует таблицы хранения логов репликации для типа ALLPK (обновление первичного ключа).
- В шаблон vertica.replication.LoadFlatFiles добавлена поддержка загрузки в логи репликации типа ALL_PK. При смене первичного ключа в таблицу лога репликации вставляется запись с типом операции "P".
- В шаблоне rdbms.ExecPatternSql убран параметр "scriptfile_path" (вместо этого используйте скрипты с типом "exec").
-
Групповые модели таблиц и модели маппинга:
- Для SQL скриптов моделей при возврате переменных после выполнения теперь возвращаются только те переменные, которые были переданы на вход или созданы в ходе работы скрипта.
- Промежуточные переменные, генерируемые самим шаблоном для модели не возвращаются.
- В шаблоне vertica.reverse.SynchronizeStructure добавлен новый параметр конфигурации "truncateTableForNotNull" синхронизации таблиц. С помощью этого параметра можно указать, что требуется очищать записи таблиц, для которых были добавлены NOT NULL поля без указания DEFAULT.
Исправление ошибок
- В шаблоне files.ProcessDatasetFiles возникала ошибка, если было включено кэширование и не была указана группировка файлов.
- В шаблоне vertica.reverse.SynchronizeStructure не обрабатывалась ситуация удаления партиционирования у таблицы.
- При чтении записей с MySQL источника могли возникнуть ошибки, если в таблице содержались поля DATE, TIME и TIMESTAMP.
- При выполнении скриптов на языке хранимых процедур GETL возникала ошибка для оператора ERROR, если параметр оператора был обрамлен кавычками или скобками.
- Маска пути для шаблонов могла не корректно работать, если в маске использовались не латинские символы (например русские).
- Маска пути для шаблонов могла не корректно работать, если в формате для переменной с типом STRING были заданы значения в круглых скобках. Например: (a|b|c).
- В шаблоне rdbms.copyToTables не корректно обрабатывался маппинг модели, если в шаблоне был включен параметр "copyOnlyMatching", а модель содержала поля приёмника, для которых значения рассчитывались с помощью выражений. При выполнении шаблона значения этих полей не записывались в приёмник.
- При работе шаблонов с моделями маппинга не учитывались переменные, которые передавались в выражение вычисления значений поля приёмника из workflow.
- В языке хранимых процедур Getl не корректно выполнялся скрипт, если в нем содержался одиночный комментарий (--), внутри которого был многострочный комментарий (/* */). В таком случае следующая за одиночным комментарием команда игнорировалась.
- В шаблоне vertica.reverse.SaveToFiles при генерации UDF SQL функций происходила ошибка, если шла работа с Vertica 12 или новее версии. Это происходило из-за того, что начиная с 12 версии Vertica такие функции теперь поддерживают "overload" параметров.
JDBC
Изменение функций
- Изменена версия MySQL драйвера на 8.1.0.
Версия 1.62
EasyWebServer
Добавление функций
- После выполнения скриптов workflow, которые изменяют объекты репозитория, теперь автоматически перечитывается дерево репозитория у вызвавшего workflow пользователя. Остальным пользователям потребуется вручную перечитать дерево репозитория.
Исправление ошибок
- Не корректно отображались номера полей датасета после их удаления или фильтрации по имени.
EasyLoader
Добавление функций
- Добавлен шаблон rdbms.ExecPatternSql, с помощью которого можно выполнять шаблонизированные SQL скрипты над группами таблиц.
Исправление ошибок
- Если у таблицы Vertica в segmentedBy был указан ALL NODES, то при создании таблицы происходила ошибка.
- Если в SQL скрипте перед SQL оператором стоял одиночный комментарий, внутри которого был многострочный комментарий, то комментарий пропускался, а оператор не выполнялся.
Версия 1.61
EasyWebServer
Добавление функций
- При импорте таблиц теперь можно отключить импорт полей таблиц. Таблицы будут импортированы в репозиторий без описания структуры полей.
- В опции создания таблиц PostgreSQL добавлено свойство "unlogged", при включении которого таблицы будут создаваться в БД, как "не логируемые".
Изменение функций
- Расширена функциональность переменных среды "Properties" в панели администрирования. Теперь помимо глобальных переменных можно задавать переменные для конкретных репозиториев. Это позволяет задать для разных репозиториев нужные значения переменных с одинаковым именем.
Исправление ошибок
- При добавлении или импорте репозитория текущий пользователь должен был устанавливать для себя права доступа к полученному репозиторию.
- В соединении DBF файлов отсутствовало свойство кодировки файлов.
EasyLoader
Изменение функций
- Для шаблона vertica.copy.CopyToVertica добавлен параметр environment, с помощью которого можно задать, с какой среды копировать данные без необходимости делать внешний коннект на источник данных.
- В шаблон rdbms.CopyToTables добавлены параметры для выполнения объединения записей источника с приёмником (MERGE).
- Для шаблона загрузки flat файлов vertica.replication.LoadFlatFiles теперь можно описать правила обработки ошибок для конкретных таблиц по моделям в файле конфигурации.
Исправление ошибок
- Шаблон rdbms.RunSql не корректно работал при вызове в многопоточном режиме, где параллельные потоки RunSql работали в рамках главного соединения, а не его клона.
- В шаблоне vertica.replication.CreateLogTables не корректно копировались данные со старой в новую создаваемую таблицу без учета реальной структуры старой таблицы лога репликации.
- В шаблоне rdbms.CopyToTables при пакетном копировании записей соединение приёмника могло отвалиться по таймауту, если слишком долго возвращались данные с приёмника и это соединение было открыто при чтении инкрементальной точки или таблицы истории.
JDBC
Изменение функций
- Изменена версия PosgreSQL драйвера на 42.6.0.
Версия 1.60
EasyWebServer
Добавление функций
- По правой кнопке мыши можно скопировать имя объекта в списке просмотра объектов группы или щелкнув на имени вкладки открытого редактора.
- В датасетах появилась экспериментальная вкладка "Данные", в которой можно просмотреть содержание датасета.
- В workflow теперь можно по правой кнопки мыши клонировать скрипт в шаге.
- Добавлена автоматическая перезагрузка объектов репозитория после вызова шаблонов и скриптов, которые изменяют содержимое репозитория.
- В панели администратора для пользователей добавлен раздел управления правами пользователей на репозитории. Всем пользователям доступны все репозитории портала для чтения, однако изменение объектов репозитория или запуск workflow должны явно задаваться в правах для пользователя.
- Теперь при переключении между репозиториями разных сред в интерфейсе будут отдельными цветами выделяться репозитории тестовой и промышленной среды эксплуатации.
- В панели администратора теперь можно временно отключить вход в портал пользователю, сняв у него флаг "Активность".
- В workflow теперь можно смотреть выполняемый в текущий момент или ранее выполненный лог процесса в отдельном окне, для этого добавлена кнопка "Лог в новом окне". Лог хранится в файловой системе и не пропадает после закрытия workflow или выхода из интерфейса портала. Таким образом, последний результат выполнения wofkflow теперь можно посмотреть в любой момент времени.
- Во вкладку опций создания для Vertica таблицы добавлено свойство "Наследование прав", в котором можно выбрать, как должна таблица наследовать права от родительской схемы.
Изменение функций
- При запуске workflow во вкладке отладки теперь не выводится вся служебная информация о старте процесса, что сокращает размер лога и улучшает его читабельность.
- Для датасетов теперь при выборе типа поле NUMERIC длина и точность поля не являются обязательными.
- При старте портала теперь репозитории не загружаются сразу в память, а подгружаются по мере обращения к объектам. Скорость старта портала значительно увеличилась, однако чуть замедлилась скорость чтения списка объектов группы при первом обращении к ним.
- Теперь при работе workflow активный лог работы режется до 300 последних строк, чтобы не занимать память браузера и не тормозить процесс отрисовки из-за большого объема лога.
Исправление ошибок
- В моделях групп и маппинга таблиц происходило некорректное сохранение таблиц модели, если во вкладке таблиц была задана фильтрация. В таком случае сохранялись только таблицы, которые подходили под заданный фильтр.
- При регистрации или изменении почты и пароля пользователя не проверялось, что указанное значение может содержать пробелы или псевдосимволы, что приводило к невозможности пользователю подключиться к порталу.
- Если пользователь выходил из учетной записи портала, но у него стоял флаг "Запомнить", то при следующем подключении происходил автоматический логин под вышедшим пользователем.
- Если по каким–то причинам был испорчен файл конфигурации объекта, то при попытке открыть его редактор, выдавалась ошибка и открывался пустой редактор. Теперь после выдачи ошибки редактор не открывается.
- Если открывался на редактирование датасет и пользователь щелкал на поле, помеченное как Primary Key, то при закрытии редактора предлагалось сохранить изменения, даже если ничего не менялось.
- В имени группы можно было задать пустое имя подгруппы, указав подряд две точки в имени группы объекта.
- При экспорте полей из таблиц Oracle в таблицы Vertica не корректно обрабатывались поля Oracle с типом NUMBER.
EasyLoader
Добавление функций
- Добавлен шаблон vertica.replication.CheckLogTables для проверки готовности таблиц приёмников и содержимого таблиц логов к репликации.
- Добавлен шаблон репликации vertica.replication.ReplicationLogTables из таблиц логов репликации в таблицы приёмника. На текущий момент поддерживаются типы репликаций NEW и NEW_EMPTY.
- Добавлен шаблон files.ExecuteScriptFile, с помощью которого можно выполнить Getl скрипт из файла локальной системы или репозитория.
- Добавлен шаблон files.GenerateObjectsScriptFile, с помощью которого можно выполнить Getl скрипт создания или изменения объектов в репозитории с автоматическим обновлением репозитория после выполнения скрипта.
- Добавлен шаблон repository.SynchJDBCTableStructure, который генерирует SQL скрипт с DML командами обновления структуры таблиц источника до структуры репозитория.
- Добавлен шаблон vertica.replication.LoadFlatFiles загрузки flat файлов OGG в таблицы логов репликации.
- Добавлен шаблон vertica.replication.ClearDoublesFromLogTables, с помощью которого можно искать и исправлять в таблицах логов репликации ошибки в виде дублей записей транзакций.
- Добавлена поддержка записи CSV файлов с разделителями в виде псевдо-символов.
- В шаблоны вызова программы RunProgram и вызова скрипта ExecuteScriptFile добавлен параметр exit_with_refresh, который сигнализирует, что после выполнения шаблона требуется перечитать репозиторий.
- В шаблон CleanLogs добавлен параметр workflow_as_subdir, который влияет на поиск логов внутри корневой директории. При включении этого параметра предполагается, что в корневой директории находятся директории по именам выполняемых workflow. При выключении параметра логи ищутся внутри корневой директории.
- В шаблон vertica.replication.CreateLogTables добавлен параметр grant_schema_roles, в котором можно перечислить роли и пользователей для организации доступа к схеме хранения логов репликации.
- В шаблоне vertica.replication.CreateLogTables добавлен параметр recreate_tables, при включении которого существующие таблицы логов репликации будут пересоздаваться без потери данных.
- Для шаблона CreateLogTables добавлен параметр recreate_if_difference_structure, с помощью которого можно отключить сравнение структур и принудительно пересоздавать буферные таблицы логов репликации.
- Для CSV соединений добавлены свойства blobAsPureHex и blobPrefix, в которых можно задать, нужен ли префикс для значений BLOB полей и значение префикса.
- Произведена оптимизация пакетной загрузки данных в таблицы Vertica для увеличения скорости загрузки и исключение потери переводов строк в загружаемых текстовых полях.
- В скриптовый язык добавлены функции parseSQLDate, parseSQLTime, parseSQLTimestamp, isTable, isView и isQuery.
Исправление ошибок
- В шаблоне vertica.replication.LoadLogTables не учитывались записи с оператором смены первичного ключа.
- В шаблоне vertica.replication.LoadLogTables исправлена ошибка, где при загрузке данных из таблиц логов источника текстовые поля с пустыми значениями интерпретировались как NULL.
- Для всех шаблонов, работающих с моделями таблиц исправлена ошибка, где timestamp партиции писались в историю, но при следующем запуске по ним заново шла загрузка.
- В шаблоне files.CleanLogs возникала ошибка, если в пути хранения логов использовались переменные Getl.
- При создании буферных таблиц логов репликации в сортировке и сегментации не учитывались поля первичного ключа в шаблоне vertica.replication.CreateLogTables.
- При завершении работы с файловыми менеджерами шаблонов не происходило отсоединение от источника, что могло привести к зависанию задачи при завершении её работы, если драйвер менеджера продолжал удерживать коннект.
- При работе с CSV датасетами в свойствах обрамления текстовых полей, разделителя полей и разделителя записи не корректно обрабатывался escape символ "\\", что не позволяло задать разделителем псевдо-символ в формате "\\u<ЧИСЛО>".
- Для Vertica таблиц происходила не корректная пакетная загрузка значений BLOB полей из файлов в таблицы.
- При выполнении SQL скрипта возникала ошибка, если после открывающей скобки сразу же стояла запятая.
- Если в операторе ECHO SQL скрипта в конце стоял "--комментарий", то следующий за ECHO оператор не выполнялся.
- При автоматической конвертации значений полей источника в приёмник не было проверки переполнения числовых типов, что могло привести к некорректной записи данных из источника в приёмник, если в источнике тип данных был большей разрядности, чем в приёмнике.
- Если в файловых шаблонах была включена опция копирования только файлов, которые есть в истории загрузке, то при копировании таких файлов их имена снова вставлялись в историю, что приводило к ошибке дублирования уникального ключа.
Версия 1.59
EasyWebServer
Добавление функций
- Добавлены шаблоны vertica.replication.CreateLogTables и vertica.replication.oracle.LoadLogTables, с помощью которых можно развернуть промежуточные таблицы для хранения логов репликации и обеспечить инкрементальную загрузку из таблиц хранения логов репликации Oracle (IUD).
- При экспорте датасета в портале на другое соединение конвертация полей не учитывался размер хранения текстов в байтах между разными источниками и в чём описывается длина хранения текста: в байтах или символах. При конвертации текстового поля из источника, где длина текста задана в символах в поле приёмника, который указывает длину текста в байтах, длина будет указана меньшей, чем приёмнику нужно для хранения значения поля. Теперь в JDBC соединения добавлены свойства "Кодовая страница БД" и "Длина полей указана в байтах", которые позволяют точно рассчитать длину текстовых полей при конвертации из разных источников. В случае, если для отдельного поля таблицы была задана явная другая кодовая страница, это будет так же учитываться при конвертации типов.
- При работе с CSV поля BLOB всегда записывались в HEX формате последовательности байт, что приводило к невозможности пакетного чтения таких файлов многими СУБД, которые ожидают данных такого типа в формате "0xбайты в HEX". По умолчанию теперь значения BLOB полей записываются в этом формате. Для управления способом записи в CSV соединение добавлено свойство "Натуральный формат BLOB", при включении которого BLOB будут записаны без "0x".
- В скриптовый язык добавлена функция "decode" (аналог SQL функции), в которой можно сравнить значение с перечисленными условиями и вернуть значение, заданное для подходящего условия.
- В моделях маппинга при нажатии кнопки "Авто соединение таблиц" теперь можно указать маску связи таблиц источника и приёмника. В ней задается шаблон "<маска источника>:<маска приёмника>", где в маске нужно использовать переменную "{name}", которая обозначает исходное имя, которым нужно оперировать. Пример маски соединения представлений с префиксом "v_" и таблиц с суффиксом "_from_view": "v_{name}:{name}_from_view", где "v_table1" будет соединена с "table1_from_view".
- В диалоговом окне выбора объектов теперь можно фильтровать список объектов группы по части имени.
Изменение функций
- В моделях трансформации и маппинга таблиц изменен принцип работы таблиц модели с инкрементальными точками. Теперь в таблицах модели не указывается инкрементальный менеджер. Вместо этого на главной вкладке модели задается таблица хранения инкрементальных точек. Процесс автоматически в этой таблице хранит инкрементальные значения для каждой таблицы модели, у которой задано поле инкремента. Если в существующих репозиториях уже используются инкрементальные точки, то требуется увеличить в таблице хранения точек поле source до размерности 256 знаков, а так же сделать UPDATE source в этой таблице точки с именем, ранее указанным в инкрементальном менеджере, используемым в модели на составное имя: "ИмяМодели@ИмяТаблицыМодели". Если это не сделать, инкрементальные точки будут потеряны: инкрементальная загрузка начнется с нулевой позиции!!!
EasyLoader
Смена версии
- Номер версии изменен на "6.3". Перед установкой обновления проверьте, что лицензия Вашего репозитория поддерживает этот номер версии!!!
Исправление ошибок
- При работе с JDBC таблицами, содержащих timestamp поля, миллисекунды обрезались до трех знаков. В случае использования таких полей как инкрементальных это приводило к неправильной работе, где после захвата записей они могли быть снова загружены в следующий раз, так как по разрядности наносекунд были больше, чем обрезанное значение поле до трех знаков миллисекунд. Теперь JDBC источники позволяют обрабатывать до шести знаков наносекунд.
- При работе с CSV поля timestamp могли содержать не более трех знаков миллисекунд. Теперь по умолчанию формат чтения и записи предполагает хранение миллисекунд до трех знаков, но при необходимости в формате данных можно задать хранение до девяти знаков наносекунд.
- При чтении и записи BLOB полей данных из Oracle могла возникать ошибка "Класс oracle.jdbc.OracleBlob не известен". Теперь такие поля читаются и пишутся без ошибок.
Версия 1.58
EasyWebServer
Добавление функций
- В гриде датасетов операции с JDBC таблицами вынесены в отдельную кнопку "Операции".
- В гриде датасетов в "Операции" добавлен режим "Изменение схемы", с помощью которого можно изменить схему БД у помеченных в гриде JDBC таблиц.
- При экспорте датасетов в другое соединение теперь можно при необходимости явно задать схему БД, которую нужно установить для экспортируемых таблиц источника. Функция работает, если соединение приёмника имеет тип JDBC.
- В список объектов для всех типов добавлена кнопка "Переместить в группу", где можно выделить список объектов и задать им новое имя группы в репозитории.
EasyLoader
Добавление функций
- В процесс rdbms.CopyToTables добавлен флаг check_destination_tables, с помощью которого можно выключить принудительную проверку структуры таблиц на приёмнике с описанием их структуры в репозитории перед началом копирования для ускорения выполнения процесса.
Исправление ошибок
- Если при работе с Excel файлами у них расширение было с заглавными буквами, то возникала ошибка, что такой тип файла не поддерживается. Теперь для файлов с расширением xlsx и xls есть поддержка вне зависимости от регистра расширения в имени файла.
Версия 1.57
EasyLoader
Добавление функций
- Для процесса files.ProcessDatasetFiles добавлен параметр "copy_only_matching", которым можно исключить вставку в таблицу приёмника значений полей, отсутствующих в источнике. Требуется выключить этот параметр, если в маппинге модели для полей приёмника указываются константы или вычисляемые выражения, которые будут так же вставляться в приёмник.
- Для скриптов wofkflow и выражений моделей в языке Getl добавлены функции asDate, asTime и asTimestamp для конвертации текстового или числового значения в нужный тип.
Исправление ошибок
- При чтении таблиц Oracle могли возникать ошибки, если были поля с типом BLOB для последних версий Oracle. Теперь бинарные поля корректно читаются вне зависимости от версии Oracle.
- Если в модели маппинга для процесса files.ProcessDatasetFiles указывались скрипты инициализации "dest_init" и финализации "dest_done" в таблице модели, то эти скрипты выполнялись всегда, даже если процесс не обнаружил файлов для обработки. Теперь эти скрипты будут вызываться только, если процессом были найдены файлы.
- Процесс files.ProcessDatasetFiles вызывал скрипты инициализации "dest_init" и финализации "dest_done" таблицы модели вне явно запускаемой транзакции. Это приводило к тому, что после выполнения скрипта и закрытия соединения к приёмнику, СУБД откатывало изменения. Теперь скрипты выполняются в рамках транзакции, если приёмник поддерживает работу с ними и при успешном выполнении скрипта транзакция будет зафиксирована вызовом COMMIT.
- Для Firebird соединений возникала ошибка, если указывался путь к файлу базы данных, в котором были использованы {переменные окружения}.
- При включении флага bulkLoad процессам, которые загружают данные с источника в БД Vertica через промежуточные файлы, мог использоваться не корректный парсер загрузки, что приводило к обрезанию длины значений текстовых полей без ошибки загрузки, если значение источника превышало размер длины поля в таблице Vertica. Теперь это можно контролировать явно через параметр шаблонов bulk_escaped, где для контроля длины полей и поддержки кодировки NULL собственным значением, bulk_escaped должен быть включен.
- В язык Getl добавлена поддержка работы с базами данных SQLite с помощью операторов sqliteConnection и sqliteTable. В репозитории портала возможность визуально описывать соединения и таблицы SQLite отсутствует.
Версия 1.56
EasyLoader
Исправление ошибок
- При работе процесса files.ProcessDatasetFiles с включенными флагами кэширования и пакетной загрузкой в таблицу ничего не загружалось после обработки файлов. Теперь все работает корректно.
Версия 1.55
EasyWebServer
Исправление ошибок
- В моделях мониторинга и эталонных таблиц Vertica не корректно работали checkbox для булевых свойств датасетов модели, что приводило к невозможности выключить или включить нужное свойство.
EasyLoader
Добавление функций
- Добавлен новый шаблон rdbms.MonitorSources, с помощью которого можно проверять наполнение таблиц БД на отставание от заданного периода.
Исправление ошибок
- При пакетной загрузке одно файла в БД могло ничего не произойти, если нужно было загрузить единственный файл, а не список по маске. Теперь файл будет корректно загружен.
Версия 1.54
EasyLoader
Исправление ошибок
- Для шаблонов, которые используют модели маппинга, возникала ошибка "Источник не поддерживает SQL скрипты", если источник не был JDBC совместимым, но не имел скриптов в модели.
- При генерации ошибки не корректно обрабатывалось имя workflow, в котором произошла ошибка и это могло привести к ошибке, что переменная не найдена.
Версия 1.53
EasyWebServer
Добавление функций
- Интерфейс переведен на последнюю версию Webix для оптимизации производительности и закрытия ряда багов интерфейсной части JavaScript.
- В JDBC соединения добавлена вкладка атрибутов. Добавляемые соединению атрибуты можно использовать как глобальные переменные при запуске скриптов через SQL Scripter для этого соединения.
- В моделях трансформации и маппинга для таблиц моделей добавлена вкладка "Скрипты". Во вкладке можно задавать события для шаблонов, код которых написан на SQL языке ХП Getl. Помимо кода в скрипте можно использовать оператор RUN_FILE, чтобы выполнить код из SQL файла, находящегося в репозитории или на внешнем диске.
Исправление ошибок
- В редакторе полей датасетов можно было одновременно при групповом изменении свойств полей задать ключевое поле и nullable. Теперь можно задать что-то одно из них.
EasyLoader
Добавление функций
- Для шаблона files.ProcessingDatasetFiles добавлена поддержка событий, код которых указывается в SQL скриптах таблиц модели.
- Для шаблона rdbms.CopyToTables добавлена поддержка событий, код которых указывается в SQL скриптах таблиц модели.
- Расширена функциональность оператора "RUN_FILE" в языке хранимых процедур. Теперь можно указывать выполнение файлов с репозитория без указания префикса "repository:". Поиск файлов происходит сначала в файловой системе, потом в репозитории и если файл нигде не найден, выдается ошибка.
Исправление ошибок
- При работе с запросами Oracle возникала ошибка, если возвращались поля с типом "date". Теперь такие поля корректно обрабатываются наравне с "timestamp" полями.
Версия 1.52
EasyWebServer
Добавление функций
- В файловые источники, поддерживающие веб-сервисы добавлена возможность работы с аутентификацией. В соединения работы с Json, Xml и Yaml добавлены свойства: логин, пароль и тип аутентификации. Поддерживается базовая и NTLM аутентификация по http протоколу.
- В гриде датасетов появилась кнопка перечитки списка полей для выбранных в списке таблиц. Ранее приходилось заходить в каждый датасет и нажимать кнопку перечитки списка полей.
- Для моделей эталонных данных таблиц Vertica в списке моделей добавилась группа кнопок, с помощью которой можно создать таблицы хранения эталонных данных, сохранить эталонные данные из рабочих таблиц или внешнего кластера Vertica, очистить рабочие таблицы или заполнить их эталонными данными, а также удалить таблицы хранения эталонных данных в БД.
- При создании нового репозитория теперь в автоматически создаваемой файла конфигурации репозитория сразу генерируется шаблон, в котором указаны основные настройки работы процессов с репозиторием для каждого стенда репозитория, такие как язык сообщений (по умолчанию русский), логирование процессов, JDBC соединений и файловых менеджеров, профилирование и параметры настройки дев стенда для работы с Vertica.
- В датасете теперь во вкладке полей появилась кнопка "Установка свойств", с помощью которой можно для выбранной группы полей массово установить тип поля или другие его характеристики.
- При просмотре файлов репозитория теперь для администраторов портала видны файлы лицензии репозитория и его конфигурации. Ранее эти файлы скрывались для всех пользователей.
- Добавлена поддержка механизма лицензирования по номеру версии продукта.
Исправление ошибок
- При долгом простое открытой веб страницы работы с порталом могли возникнуть ошибки при попытке дальнейшей работы с интерфейсом пользователем. Теперь время активной сессии в браузере увеличено до 6 часов и в случае потери сессии портал переходит на страницу логина, чтобы пользователь не смог работать с несуществующей веб сессией.
EasyLoader
Добавление функций
- При вызове событий шаблона files.ProcessingDatasetFiles внутри кода событий было невозможно определить, для какого обрабатываемого файла вызвано событие. Теперь в события параметром передаются атрибуты файлы (см. описание событий шаблона).
Исправление ошибок
- В шаблоне files.CleanFiles возникало задвоение файлов в таблице истории, так как после удаления уже существующих в истории файлов на источнике, они снова добавлялись в таблицу истории.
- При работе с БД Vertica при генерации запросов могла возникнуть ошибка, если поле называлось "NEW". Теперь это слово считается ключевым и обрамляется в двойные кавычки.
- Для шаблона rdbms.CopyToTables возникала ошибка, что партиции не поддерживаются, если в качестве источника выступал файловый источник с чтением данных с веб-сервиса и таблице в модели был назначен датасет списка партиций. Теперь при работе с веб-сервисами полноценно поддерживается чтение по списку партиций.
- Для шаблона vertica.CaptureData возникала ошибка закрытия соединения, если для таблицы модели указывался инкрементальный менеджер, который имел такое же соединение, как соединение приёмника модели. Теперь эта ситуация корректно обрабатывается и соединение закрывается только после окончания работы процесса с моделью.
Версия 1.51
EasyWebServer
Добавление функций
- В главное меню добавлена кнопка вызова просмотра помощи по шаблонам в отдельной вкладке. Это позволяет по документации выбранного шаблона скрипта workflow разрабатывать нужную модель, без необходимости возвращаться в workflow и в модальном окне вызывать помощь по правилам заполнения модели.
Исправление ошибок
- В workflow при выборе объекта для параметра скрипта вызывалось модальное окно выбора, однако объект не выбирался двойным нажатием левой кнопки мышки, только выделением и нажатием кнопки "Ок". Теперь двойное нажатие тоже работает.
- В файлах репозитория при нажатии кнопки "Новый файл" запрашивалось его имя, файл создавался на диске, но не открывался сразу на редактирование. Теперь редактор автоматически открывается для новых файлов.
EasyLoader
Добавление функций
-
Расширена функциональность для шаблона vertica.CopyToVertica:
- Добавлен параметр source_login, в котором можно указать, под каким логином подключаться к источнику;
- Добавлены атрибуты limit и order, с помощью которых для модели можно задать порядок сортировки выгрузки записей с источника и ограничение количества выгружаемых записей.
- В язык выражений добавлена поддержка функций isNull и nullIf.
- В конфигурации репозитория теперь в разделе sqlscripter можно включить принудительную отладку выполнения запросов с помощью параметра debug. Это позволит в логе выполнения процесса увидеть, лог работы Sql scripter при обработке и выполнении sql скриптов.
Исправление ошибок
- В некоторых случаях при ошибках работы с датасетами шаблоны в тексте ошибки вместо имени датасета выводили "noname". Это не позволяло определить, какой именно датасет содержит ошибки. Теперь при ошибках выводится как имя датасета в репозитории, так и его физическое имя в источнике (имя таблицы или файла).
- Для Excel датасетов возникала ошибка чтения датасетов, ячейки которых содержали ошибку "#Н/Д". Теперь такие ячейки интерпретируются как null значения.
- Если для Excel датасета поле, указанное как string в ячейках содержало тип number, то значение такого поля возвращалось в double формате. Теперь такие поля правильно интерпретируются с числового в текстовый формат.
- Для таблиц СУБД H2 не корректно возвращался список полей для регистрозависимых таблиц.
- Не удавалось считать список таблиц с БД, у которых в именах содержались одинарные кавычки и переводы строк. Теперь такие таблицы видны при импорте таблиц в портале и доступны к работе.
- При импорте в портал таблиц с БД, в именах которых содержались запрещенные в именовании объектов портала символы (такие, как перевод строки, табуляция, кавычки, двоеточие и т.д.), такие символы заменялись на символ подчеркивания. Однако, если в списке таблиц были имена, различие которых было только в некорректных символах, после преобразования их имена дублировались и возникала ошибка импорта. Например, импорт "table@1" и "table:1" генерировал имена table_1 и table_1. Теперь в именах объектов репозитория генерируется числовой ascii код таких символов в имя таблицы вместо простого подчеркивания, что решает проблему с дублированием имен.
- При выполнении sql скриптов в некоторых случаях Sql scripter не корректно определял тип выполняемого оператора, если в нем содержался SELECT и пытался его выполнить с получением результата. Например, оператор "EXPORT TO VERTICA AS SELECT" приводил к ошибке. Теперь Sql scripter точно определяет, где идет SELECT с возвратом результата, а где выполняется другой оператор.
- Если в sql скрипте перед оператором стоял хинт в комментарии, то такой оператор мог быть пропущен при выполнении, где Sql scripter ошибочно считал, что он часть комментария. Ошибка исправлена.
Версия 1.50
EasyWebServer
Добавление функций
- В моделях маппинга и списка таблиц добавлена возможность быстрого поиска таблицы по имени среди списка таблиц модели.
Исправление ошибок
- Кнопка создания таблиц позволяла запустить мастера создания для датасетов, не совместимых с JDBC таблицами. Теперь кнопка не горит, если выбраны не JDBC таблицы.
- В таблицах JDBC не корректно работало добавление и удаление индексов во вкладке "Создание". Теперь проблем нет при описании индексов для таблицы.
- В индексах таблиц JDBC вкладки "Создания" отсутствовала возможно выставить уникальность индексу. Это теперь можно сделать в свойстве "unique".
- При открытии нескольких моделей маппинга таблиц выходила ошибка неуникального id формы. Это исправлено.
- В панели администратора при создании нового репозитория в каталог, где уже был ранее прописан репозиторий возникала ошибка. Теперь портал не позволяет создать новый репозиторий в такой каталог и предлагает его импортировать.
EasyLoader
Исправление ошибок
- В шаблоне рефакторинга проекций Projections мог генерироваться хинт "createtype(L)", что при выполнении такого DDL приводило к ошибке в Vertica. Теперь такой хинт убирается из скрипта создания проекции.
Версия 1.49
EasyWebServer
Добавление функций
- При выгрузке репозитория теперь спрашивается, нужно ли выгружать в архив библиотеки репозитория.
- Для таблиц Vertica теперь во вкладке опций создания есть возможность установить, следует ли включать проверку Primary Key в таблице при работе с ней.
Исправление ошибок
- При запуске скрипта из редактора файлов репозитория для ClickHouse выходила ошибка, что соединение не поддерживает транзакции и скрипт не выполнялся. Теперь скрипты в ClickHouse запускаются.
EasyLoader
Изменение функций
- Для шаблона EasyLoader.vertica.refactor.Projections добавлено свойство rules_file, в котором можно задать конфигурацию фильтрации списка обрабатываемых таблиц.
- Изменено свойство connection\_name на connection, добавлено свойство логин.
- Для шаблона EasyLoader.vertica.reverse.SaveToFiles доработана модель получения метаданных, чтобы было можно ссылаться на все поля служебных таблиц Vertica при написании выражений фильтрации обрабатываемых объектов реверсинга в файле конфигурации.
- Ранее в языке макросов Getl поддерживалось экранирование символов "$", "{" и "}" с помощью "\", чтобы исключить их с обработки. Теперь символ экранирования изменен на "~2, чтобы не было пересечения с экранированием в языках Groovy и SQL. То есть в тексте, где требуется вставить фигурную скобку, вместо её обработки, как переменной "{var}", нужно указать "~{~var~}~".
Исправление ошибок
- Для соединений H2 и Vertica исправлена ошибка, которая возникала при вызове оператора dropSchema для этих соединений.
- При работе с ClickHouse в лог работы писались сообщения по отсутствию инициализации log4j. Теперь такие сообщения не пишутся.
Версия 1.48
EasyWebServer
Добавление функций
- Добавлен новый тип источника ClickHouse. Для соединений поддерживается работа через ssl. Для таблиц поддерживается создание и удаление таблиц, добавление записей в таблицы и очистка записей в таблицах оператором truncate table. Нет поддержки time полей.
- Добавлен новый тип источника SAP Hana. Поддерживается полный функционал работы с таблицами. Нет поддержки записи в blob поля.
- В редактор SQL скриптов файлов добавлена возможность выбора среды выполнения, на которой требуется выполнить скрипт.
Версия 1.47
EasyWorkspace
Добавление функций
- При старте приложения очищаются устаревшие логи работы старше 7 дней.
Исправление ошибок
- При выгрузке файлов с сайта на локальный диск при запросе имени файла терялось расширение. Теперь расширение автоматически подставляется в окно выбора пути сохранения.
- При выгрузке файлов на локальный диск в окне прогресса выгрузки показывалось не корректное имя файла.
EasyWebServer
Добавление функций
- В моделях групп таблиц и моделях маппинга появилась возможность описывать подчиненные таблицы к таблицам источника. Использование таких таблиц позволяет организовать схему записи master-detail, где при чтении таблицы источника по полям, содержащим вложенную структуру будет автоматически произведена обработка с помощью подчиненных таблиц и далее с них произведена запись в выбранные таблицы приёмника. В качестве вложенных таблиц можно использовать датасеты ArrayDataset, CSVDataset, JSONDataset, XMLDataset и YAMLDataset. Для выбора подчиненной таблицы на основной таблице нажмите кнопку "Добавить подчиненный" и выберите датасет. В подчиненном датасете укажите в свойстве "Поле связи" имя поля для главной таблицы, для которого нужно брать значения как структуру данных. В свойстве "Таблица приёмника" выберите таблицу назначения, куда будут записываться полученные данные. Для подчиненных таблиц можно описывать маппинг полей. Помимо полей подчиненных таблиц в таблицу приёмника будут приходить поля таблицы источника, имена которых так же можно использовать в маппинге.
- Добавлен новый тип источника Array, который позволяет описывать массив как источник с одним полем. Создайте в репозитории одно соединение ArrayDatasetConnection и на него создавайте для полей, содержащих массивы датасеты ArrayDataset. Такие датасеты дальше можно использовать как подчиненные датасеты в моделях групп таблиц и моделях маппинга. У ArrayDataset может быть только одно поле, тип которого можно переопределить.
- В выражения маппинга моделей и код скриптов workflow выведены в публичный доступ функции работы со строками, числами, датами и парсингом файловых структур.
- В пути к локальным файлам теперь можно указывать служебную переменную {#REPOSITORY}, вместо которой будет подставляться путь к репозиторию, где описаны объекты.
- В коде скриптов workflow теперь можно обращаться к шагам и скриптам с помощью встроенных функций step('ИмяШага') и script('ИмяСкрипта').
- Теперь при выгрузке архива репозитория в панели администратора в zip файл так же включаются библиотеки шаблонов, которые привязаны к выгружаемому репозиторию. Ранее, чтобы запускаемые workflow видели скрипты подключаемых библиотек шаблонов, требовалось jar файлы скопировать в каталог userlibs инсталляции EasyLoader.
- Добавлена видимость пользовательских статических функций с библиотек шаблонов в скрипты workflow и выражения маппинга моделей. К функциям нужно обращаться в формате "ИмяПакета.ИмяКласса.ИмяФункции".
- Для файлов репозитория добавлена кнопка "Новый файл". Это позволяет с портала создавать в репозитории файлы без необходимости создавать их локально и загружать в портал.
- Для файлов репозитория с расширением sql доработан редактор. Теперь можно во вкладке "Выполнить" выбрать соединение, указать логин и запустить выполнить редактируемый SQL скрипт без необходимости делать workflow, который будет его запускать.
- При старте портала очищаются устаревшие логи работы с репозиториями старше 7 дней.
Исправление ошибок
- При экспорте файловых датасетов в таблицы JDBC в полях таблиц оставались заполненные алиасы полей, что приводило к ошибкам чтения данных из таблиц. Теперь при таком экспорте алиасы полей сбрасываются.
- При создании модели группы таблиц "Dataset groups" возникала ошибка, если соединение модели было не совместимое с JDBC источниками.
EasyLoader
Добавление функций
- Добавлен новый шаблон EasyLoader.rdbms.SwitchLogin, в котором можно переключить логин для заданного соединения. Позволяет управлять работой под нужным логином для ряда действий без необходимости это делать в скрипте шага для соединения.
- В шаблон EasyLoader.files.ProcessDatasetFiles добавлены события start_write_file, finish_write_file, start_write_cache и finish_write_cache.
- В шаблон EasyLoader.files..ProcessDatasetFiles добавлена поддержка моделей маппинга с главными-подчиненными данными. Ранее можно было загрузить только данные из файлов в одну таблицу приёмника. Теперь в модели маппинга можно добавить подчиненные таблицы, связать их с полями источника и организовать запись в таблицы детализации приёмника.
Исправление ошибок
- Для CSV источников данных не корректно работал парсинг числовых и дата-время полей в локали ce-RU, если числа выгружались с разделителем запятая и в дате стояло русское название месяца. Теперь все работает корректно.
- Если в SQL скрипте на языке ХП Getl стояло ECHO {var} без статического текста в сообщение, то оператор ECHO не срабатывал. Теперь сообщение выводится.
- В шаблоне EasyLoader.Files.ProcessDatasetFiles возникала ошибка, если для скрипта не были заданы менеджеры для хранения архивов и ошибок.
- В файловых шаблонах EasyLoader.Files.* при указании сортировки обработки файлов поля с DESC возникала ошибка (например "FILEDATE DESC").
Библиотеки шаблонов
Добавление функций
- В библиотеке шаблонов можно явно указать, какие классы требуется подгрузить сразу при старте приложения. Это позволяет в разделе static этих классов инициализировать нужные для работы данные. Нужно создать ресурсный файл "getl-library.conf" и в нем перечислить требуемые для инициализации классы "init_classes=['Пакет.Класс1', 'Пакет.Класс2', ...]"
Версия 1.46
EasyWebServer
Исправление ошибок
- При выборе в модальном окне объекта репозитория для импорта таблиц с БД, добавления таблиц модели, выбора таблицы истории и т.д., возникала ошибка "Объект не найден undefined:undefined". Теперь все объекты корректно выбираются из модального окна.
Версия 1.45
EasyWebServer
Добавление функций
- Для моделей эталонных файлов и эталонных данных Vertica в списке объектов добавлена кнопка "Fill", с помощью которой можно развернуть эталонные данные на приёмнике без необходимости вызывать это вручную в коде.
- Для Kafka датасетов в редакторе добавилась вкладка опций управления чтением данных.
- В окне лицензии теперь показываются версии используемых Getl и EasyLoader.
Исправление ошибок
- В моделях набора таблиц и маппинга можно было дважды добавить таблицу источника в модель. Теперь при выборе таблиц для модели уже ранее выбранные подчеркиваются зеленым цветом и не добавляются в модель.
- При попытке смены источника или приёмника в моделях эталонных файлов с помощью вызова диалогового окна выбора файлового менеджера ничего не возвращалось. Теперь все возвращается.
- При вызове fill у моделей эталонных файлов и эталонных данных Vertica возвращалась ошибка, что у репозитория не включен unit test режим. Теперь он включается в портале при работе с репозиторием для текущей среды по умолчанию, но только если она не имеет название "prod".
EasyLoader
Добавление функций
- Доработана проверка кластера Vertica на соответствие ожидаемому при тестировании работы процессов. Теперь это происходит не каждый раз при старте любого workflow, а только если используется шаблон, который работает с соединением Vertica, указанным как сервер среды разработки.
- Для шаблонов файловых процессов добавлено новое событие "tracking", с помощью которого можно отслеживать хода обработки файлов процессом.
- Обновлены JDBC драйвера для работы с поддерживаемыми РСУБД на последние версии.
- Обновлены библиотеки для работы с Hadoop и Kafka на последние версии.
Исправление ошибок
- Шаблоны процессов, которые используют модели с ведением истории работы, не корректно создавали соединения для работы с таблицей истории в многопоточном режиме, что приводило к множеству лишних соединений к БД. Теперь на каждый поток корректно создается одно своё соединение.
- Шаблоны файловых процессов при возникновении ошибки с файловой системой могли попытаться некорректно записать ошибку в лог и прервать работу. Теперь ошибки файловых систем корректно отрабатываются и записываются в лог.
- При построении списка файлов шаблоны работы с файлами создавали локальную временную таблицу в СУБД, где хранится таблица истории работы с файлами, даже если СУБД не поддерживает такой тип таблиц. Теперь в этом случае будет создаваться обычная таблица, которая удалиться по завершении работы.
Расширение языка Getl
- Счетчикам БД (sequence) теперь можно сбросить текущее значение на указанное с помощью функции restartWith.
- Добавлены новые операторы attachToDataset и attachToArray, с помощью которых можно присоединить локальные данные к файловому датасету и получить с него записи.
- В язык выражений и скриптов добавлены базовые функции для работы со строками, числами, датами и конвертацией типов, а так же функции для парсинга XML, Json и Yaml структур с текста (parseXML, parseJSON и parseYAML). Список доступных функций можно посмотреть на GitHab.
Исправление багов в языке Getl
- В шаблонах, которые копируют данных между источниками, не корректно вызывался код для события "before". Теперь это событие корректно вызывает код.