Проблема интеграции данных Pentaho setVariable и getVariable - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть работа со следующим преобразованием в строке:

1) Start

2) Calculate_variables

3) use_variables

enter image description here

преобразование 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 жалуется на это?

1 Ответ

0 голосов
/ 21 сентября 2018

Я решил это.:)

Проблема заключалась в том, как я использовал переменную в шаге Javascript.

Я изменил на:

var myDateVariable=getVariable("DATE_VARIABLE","");
var sdf = java.text.SimpleDateFormat("yyyy-MM-dd",locale);
var myDate = sdf.parse(myDateVariable);

Надеюсь, это поможет кому-то застрять, как я!

...