Преобразование нескольких типов Pentaho из CSV

Я пробовал pentaho для загрузки файла CSV и сохранения в базе данных. Один из столбцов в CSV имеет несколько значений типа, например 2.7777777777777E-06, 0, 2222, 2, 35.023

Мое преобразование не поддерживает преобразование типов. Пожалуйста, помогите мне исправить это с правильным шаблоном для всех типов чисел.

Сообщение об ошибке:

_1_ читается как строка, а не как число _2_, и PDI не хочет, чтобы он был числом, потому что он содержит "e". Приветствую Javascript, а не PDI.


person sangeeth kumar    schedule 24.11.2017    source источник
comment
Спасибо за ваш комментарий. не могли бы вы объяснить эту ошибку. Модифицированное значение Java Script. 0 - Средняя строка: не удалось преобразовать строку в число: в позиции 18 для значения [2.777777777777775e-06] обнаружен нечисловой символ. На самом деле мне нужно исправить эту проблему.   -  person AlainD    schedule 24.11.2017
comment
Измененное значение сценария Java.0 - ОШИБКА (версия 7.1.0.0-12, сборка 1 от 17 мая 2017 г., 17.18.02, автор buildguy): непредвиденная ошибка 24.11.2017, 10:17:01 - измененное значение сценария Java.0 - ОШИБКА (версия 7.1.0.0-12, сборка 1 от 2017-05-16 17.18.02, buildguy): org.pentaho.di.core.exception.KettleValueException: 2017/11/24 10:17:01 - Модифицированная Java Значение сценария.0 - Ошибка Javascript: 24.11.2017, 10:17:01 - Измененное значение сценария Java.0 - 24.11.2017, 10:17:01 - Измененное значение сценария Java.0 - Непредвиденная ошибка 2017/11 / 24 10:17:01 - Измененное значение Java Script.0 - 24.11.2017 10:17:01 - Измененное значение Java Script.0 - Непредвиденная ошибка преобразования при преобразовании значения [Average String] в число 24.11.2017 10:17:01 - измененное значение Java Script.0 - 24.11.2017 10:17:01 - Modified Java Script Value.0 - Среднее значение строки: не удалось преобразовать строку в номер 24.11.2017, 10:17:01 - Modified Java Script Value.0 - 24.11.2017, 10:17:01 - Modified Java Sc ript Value.0 - Средняя строка: не удалось преобразовать строку в число: в позиции 18 обнаружен нечисловой символ для значения [2.777777777777775e-06] 24.11.2017, 10:17:01 - измененный скрипт Java Значение.0 - 24.11.2017, 10:17:01 - Измененное значение Java Script.0 - 24.11.2017, 10:17:01 - Измененное значение Java Script.0 - 24.11.2017, 10:17:01 - Измененное значение Java Script.0 - 24.11.2017, 10:17:01 - Измененное значение Java Script.0 - 24.11.2017, 10:17:01 - Измененное значение Java Script.0 - на org.pentaho.di .trans.steps.scriptvalues_mod.ScriptValuesMod.addValues ​​(ScriptValuesMod.java:475) 2017/11/24 10:17:01 - Измененное значение Java Script Value.0 - на org.pentaho.di.trans.steps.scriptvalues_mod.ScriptValuesMod. processRow (ScriptValuesMod.java:541) 2017/11/24 10:17:01 - Измененное значение Java Script Value.0 - на org.pentaho.di.trans.step.RunThread.run (RunThread.java:62) 2017/11 / 24 10:17:01 - Измененное значение Java Script Value.0 - на java.lang.Thread.run (Thread.java:748) 2017/11/24 10:17:01 - Изменено Значение сценария Java.0 - Вызвано: org.pentaho.di.core.exception.KettleValueException: 24.11.2017, 10:17:01 - Измененное значение сценария Java.0 - Непредвиденная ошибка 24.11.2017, 10:17: 01 - Измененное значение Java Script. 0 - 24.11.2017, 10:17:01 - Измененное значение Java Script. 0 - Непредвиденная ошибка преобразования при преобразовании значения [Average String] в число 2017/11/24 10:17:01 - Измененное значение сценария Java.0 - 24.11.2017, 10:17:01 - Измененное значение сценария Java.0 - Средняя строка: не удалось преобразовать строку в число   -  person sangeeth kumar    schedule 29.11.2017


Ответы (1)


Решение 1. Лучше всего читать как Number: введите описание изображения здесь

Решение 2. Если по какой-то причине вы не можете этого сделать, вы можете использовать шаг Select values, чтобы изменить его тип на вкладке Metadata.

Решение 3: если вы не можете преобразовать String в Number до перехода на шаг Javascript, вы должны использовать явное преобразование javascript: var x = Number(x); Однако имя вашей переменной содержит пробел и не может быть сопоставлено автоматически в переменной javascript. взлом:

Затем вы можете получить Average String в списке полей нижней таблицы в виде числа.

this["Average String"] = Number(this["Average String"]);

Все эти числа могут получить тип Number в программе чтения CSV. Ваша ошибка возникает из-за даты, считываемой с типом String, которая не хочет преобразовываться в число с помощью измененного шага Javascript.

person AlainD    schedule 29.11.2017