У меня есть работа со следующей трансформацией в строке:
1) Пуск
2) calculate_variables
3) use_variables
Преобразование Calcul_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
для создания строк. Поэтому я поставил ${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:
Когда я прикрепляю к моему Generate rows
шаг «Write to log
» и пытаюсь записать переменные как:
__________________________ 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 жалуется на это?