Печать результатов For-Loop в виде таблицы - PullRequest
1 голос
/ 03 июня 2019

У меня есть 10 строк данных на моем шаге ввода, я преобразую их в цикл for , и я должен получить более 10 строк, нов этом случае я получаю последнее преобразование каждой итерации, которое цикл имеет для каждых данных

Я пытался использовать appendToFile(), но данные результата бесполезны, и pentaho читал их как уникальный заголовок На моем alert() Метод, который я вижу, что цикл for преобразует данные.

var PERIODO = 2
var i
var fecha_final
//var ruta_acess ="D:\TEST.accdb"
//var contenido
////var contenido2
//var arreglo_completo
for (i=0; i<=PERIODO; i++){

fecha_final = dateAdd(FECHA_INICIO,"d",i)
Alert(i)
}

Как я показываю на фотографии ниже, я получаю только 10 записей, а на другой фотографии появляется результат, который яхочу, чтобы это были данные результатов каждой итерации цикла for

измененное значение JavaScript фото:

Modified JavaScript value photo

Ожидаемый результат:

Expected result

Полученный результат:

Obtained result

Ответы [ 3 ]

1 голос
/ 04 июня 2019

Ибо петли не являются чем-то особенным в PDI. Преобразования работают с наборами строк, проходящих через шаги, поэтому для производительности и стабильности лучше использовать этот образ мышления.

В вашем сценарии каждая входящая строка должна заканчиваться тремя копиями, но с разными рассчитанными значениями, основанными на одном новом поле (со значениями 0,1,2).

Способ сделать это в PDI с помощью Соединение строк (декартово произведение) шаг . Он принимает два набора входных строк и выводит строку для каждой комбинации входных строк, возможно, фильтруется путем определения ключевого поля, которое должно соответствовать. Таким образом, если у вас есть 10 строк в главном входе и 3 строки во втором, он выведет 30 строк.

Сначала вам нужно будет создать сетку данных в качестве второго ввода. Определите одно целое поле, назовите его как-нибудь понятным и на второй вкладке заполните три строки 0, 1 и 2 соответственно.

Подключите оба входа к шагу Соединение строк. Вам не нужно настраивать соответствующий ключ. Результатом шага соединения будет три строки для каждой входной строки, по одной с каждым из значений 0, 1, 2. Соедините эти выходные данные с шагом калькулятора и используйте вычисление даты A + B дней, чтобы заменить логику из вашего JavaScript. шаг.

enter image description here

0 голосов
/ 14 июня 2019

для решения этой проблемы я использовал

var row = createRowCopy (getOutputRowMeta (). Size ()) var idx = getInputRowMeta (). Size () row [idx ++] = DPROCESS

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

0 голосов
/ 03 июня 2019

Я имею в виду, что на полученной фотографии результата переменная "i" показывает только значение "3", и я хотел бы иметь "1", "2" и "3"

...