У меня есть работа со следующим преобразованием в строке:
1) Start
2) Calculate_variables
3) use_variables
![enter image description here](https://i.stack.imgur.com/RNdmA.png)
преобразование Calculate_variables
Это преобразование состоит из 3 шагов:
шаг 1:"Table input
"шаг, который читает одно значение my_date
из базы данных
шаг 2: " Add constant values
"шаг, который объявляет постоянную даты some_date
шаг 3:"Script Values / Mod
" шаг, который является шагом javascript / java, который использует my_date
и some_date
, чтобы сделать некоторые вычисления и придумать две переменные результата.Один - число в виде строки, а другой - дата в виде строки.В конце шага JavaScript у меня есть следующие утверждения:
setVariable("NUMBER_VARIABLE", calculatedNumber, "r");
setVariable("DATE_VARIABLE", calculatedDate, "r");
Мое понимание в Пентахо ограничено.Но из того, что я знаю, это создает две новые переменные NUMBER_VARIABLE
и DATE_VARIABLE
и делает их доступными для любых других заданий и преобразований, так как они установлены на root
.
use_variables преобразование
Здесь я хочу использовать переменные NUMBER_VARIABLE
и DATE_VARIABLE
.
Шаг 1: У меня "Generate Rows
" в качестве первого шагав этом преобразовании.
Я хочу использовать NUMBER_VARIABLE
в качестве Limit
для Generate Rows.Поэтому я поставил ${NUMBER_VARIABLE}
в поле Limit.
Шаг 2:"Generate Rows
" переходит на шаг javascript / java, где я пытаюсь использовать DATE_VARIABLE, как показано ниже:
var sdf = java.text.SimpleDateFormat("yyyy-MM-dd",locale);
var myDate = sdf.parse(DATE_VARIABLE.getString());
Мои ожиданиячто эта настройка должна работать нормально.Если NUMBER_VARIABLE
равно 100, ограничение для Generate Rows
в следующем преобразовании должно быть установлено равным 100, оно должно сгенерировать 100 строк, а затем шаг javascript должен быть запущен для этих 100 строк, а DATE_VARIABLE
должно быть доступно внутри шага javascript для использования..
Когда я запускаю это задание, преобразование calculate_variables
выполняется успешно.Но преобразование use_variables
завершается неудачно со следующей ошибкой:
2018/09/19 10:02:40 - Calculate Dimension Attributes.0 - ERROR (version 7.0.0.1-37, build 1 from 2016-12-21 12.39.46 by buildguy) : Unexpected error
2018/09/19 10:02:40 - Calculate Dimension Attributes.0 - ERROR (version 7.0.0.1-37, build 1 from 2016-12-21 12.39.46 by buildguy) : org.pentaho.di.core.exception.KettleValueException:
2018/09/19 10:02:40 - Calculate Dimension Attributes.0 - Javascript error:
2018/09/19 10:02:40 - Calculate Dimension Attributes.0 - ReferenceError: "DATE_VARIABLE" is not defined. (script#9)
Я не могу понять, почему это происходит и что я могу сделать, чтобы решить эту проблему.
Редактировать 1:
Когда я присоединяю шаг "Write to log
" к своему Generate rows
и пытаюсь зарегистрировать переменные как:
__________________________ the variables are _______________________
number variable=${NUMBER_VARIABLE}
date variable=${DATE_VARIABLE}
____________________________________________________________________
А затем, когда я запускаюзадание, я получаю переменные, напечатанные успешно:
2018/09/19 10:11:20 - Write to log.0 - __________________________ the variables are _______________________
2018/09/19 10:11:20 - Write to log.0 -
2018/09/19 10:11:20 - Write to log.0 - number variable=8662
2018/09/19 10:11:20 - Write to log.0 - date variable=2000-01-01
2018/09/19 10:11:20 - Write to log.0 - ____________________________________________________________________
Это означает, что переменные установлены правильно и доступны в следующем преобразовании.Почему шаг javascript жалуется на это?