Skip to content

Мажорный патч 4.14.2

Choose a tag to compare

@ascrus ascrus released this 11 Mar 19:52
· 127 commits to master since this release

Getl фичи

  • Добавлен интерфейс получения версии текущего приложения 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 баги

  • getl.tfs.TFD: при каждом новом создании датасета через функцию Dataset, создавалась новая база данных TDS в памяти.
  • getl.proc.Executor: при shutdown виртуальной машины не отслеживались запущенные Executor потоки. Теперь автоматически потокам посылается сигнал завершения, а ждущие на выполнения в очереди потоки снимаются с работы.

Getl баги

  • getl.utils.GenerationUtils: если в параметре маппинга полей функции GenerateCalcMapClosure встречались null значения в полях источника, то возникала ошибка.

Пример работы с вычисляемыми выражениями в маппинге

etl.copy(csv('file1'), verticaTable('table1')) {
  /* поле field1 с table1 не будет участвовать в процессе копирования,
      если для него в таблице задан constraint default, то оно будет им заполняться */
  map.field1 = null 

  /* Поле field2 в table1 будет заполняться из поля файла f2 */
  map.field2 = "f2"

  /* Поле field3 в table1 будет заполняться полем f3 в верхнем регистре */
  map.field3 = '${source.field3.toUpperCase()}'

  /* Вычисляемое поле xml первого уровня из поля data файла */
  map."*xml" = '${new XmlParser().parseText(source.data)}'

  /* Вычисляемое поле dt_value второго уровня будет получаться из текста элемента dt,
      ранее полученного вычисляемого поля xml */
  map."**dt_value" = '${source.xml.dt.value()[0]}'

  /* Поле  dt будет заполняться датой, отпарсенной с вычисляемого поля dt_value */
  map."dt" = '${DateUtils.ParseDate(source.dt_value)}'
}

Download GETL