Преобразование строки в целое число с помощью специального символа% в Pentaho

Привет, я столкнулся с проблемой при преобразовании строкового значения в целое число. На самом деле я читаю данные из таблицы, и есть поля вроде 39%, и они являются строковыми данными. Теперь я хочу преобразовать их в тип данных INteger и загрузить их в другую таблицу.

Я попытался использовать выбранные значения в PDI, но это дает мне ошибку, например. «Не удалось преобразовать строку в целое число».

Пожалуйста, помогите мне решить эту проблему.


person Community    schedule 26.12.2017    source источник


Ответы (1)


Знак процента не является частью целочисленного типа в Java, поэтому сначала вам нужно удалить этот символ, чтобы выполнить приведение типа.

  1. Добавьте новый «Заменить в строке» шаг между источником данных и «Выбрать значения»
  2. Дважды щелкните новый добавленный шаг и в поле «В потоке» выберите поле, которое необходимо очистить.
  3. В поле «Поиск» введите «%» (без скобок) и нажмите «ОК», чтобы закрыть диалоговое окно.

Это должно делать свое дело.

person t3b4n    schedule 27.12.2017
comment
Я сделал то же, что вы объяснили. Тем не менее я получаю сообщение об ошибке, которое не может преобразовать строку в целое число. - person ; 27.12.2017
comment
Я тестировал его с помощью PDI 6 и работал нормально. Может быть, в вашей строке есть что-то еще, например, пробел, который бесполезен. Вставьте сюда свое исключение, и, возможно, я смогу вам помочь;) - person t3b4n; 27.12.2017
comment
Suc String (100): не удалось преобразовать строку в число: в позиции 1 обнаружен нечисловой символ для значения [% 3% 9 %%%] - person ; 27.12.2017
comment
concat (ROUND ((Suc_Tot / Total) * 100), '%') --- Я использую этот оператор для получения значения с помощью специального символа. И я хочу записать данные в другую таблицу, изменив строку типа данных для этого процентного значения на Integer. - person ; 27.12.2017
comment
Почему вы соединяете символ% с числом, а затем удаляете его? - person t3b4n; 27.12.2017
comment
У меня были разные таблицы в базе данных, и я делаю этот расчет, чтобы получить процент данных из двух разных полей. после этого я должен записать эти данные в целевую таблицу. Во вводе таблицы я написал запрос на получение процентного значения, но по умолчанию он получает строковый тип данных. Я хочу, чтобы это был целочисленный тип данных. - person ; 28.12.2017
comment
Функция concat добавляет этот символ к выходным данным, поэтому, чтобы избавиться от него, достаточно просто не использовать эту функцию в вашем запросе. Перейдите от этого: concat (ROUND ((Suc_Tot / Total) * 100), '%') к этому: ROUND ((Suc_Tot / Total) * 100). Это все. - person t3b4n; 28.12.2017