Как получить информацию о шаге ввода в суб-переходе - PullRequest
0 голосов
/ 22 февраля 2019

enter image description here

Привет всем!Я должен был создать чайник транс, как на картинке.Теперь, на шаге «concat value», я хочу использовать его шаг «A, B» metainfo, но я не знаю, как его получить. Не могли бы вы мне помочь.Я могу получить информацию о шаге отображения отображения, но я не знаю, как получить его частный шаг. Я хочу получить информацию о шагах "A, B".Tks!код шага "concat value":

//Script here

function format() {
    var args = arguments;
    return this.replace(/\{(\d+)\}/g, function (m, i) {
        return args[i * 1 - 1];
    });
}
function getArr() {
    var fs = getVariable('fields', '');
    var arr = fs.split(',');
    var varr = [];
    for (var j = 0; j < arr.length; j++) {
        for (var i = 0; i < getInputRowMeta().size(); i++) { //loop through the actual row

            // Grab the metadata for this value
            //
            var valueMeta = getInputRowMeta().getValueMeta(i);

            //using the IDs instead of "String" would make it faster, see API for the IDs
            //
            if (valueMeta.getName().equals(arr[j])) { //only for String types
                varr.push(row[i]);
                break;
            }

        }

    }
    return varr;

}
function getwww() {
    var trans = _step_.getTrans();
    if (trans == null) {
        return 'err';
    }
    var transmeta = trans.getTransMeta();
    if (transmeta == null) {
        return 'err';
    }
    var minput = trans.findMappingInput();
    if (minput == null) {
        return 'err';
    }
    var arrs = transmeta.getPrevStepNames(minput[0].getStepMeta());
    var arr2 = [];
    var rowset = minput[0].getInputRowSets()
        for (var i = 0; i < rowset.length; i++) {
            arr2.push(rowset[i].getName());
        }

        return arr2.join('/');
}
var result = format.apply(getVariable('format', ''), getArr());
var pname = getwww();

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Я нашел способ решить проблему.// Сценарий здесь

function getSubPreStepName() {
    var trans = _step_.getTrans();
    if (trans == null) {
        return 'err';
    }
    var transpar = trans.getParentTrans();
    if (transpar == null) {
        return 'err';
    }
    var transmeta = trans.getTransMeta();
    if (transmeta == null) {
        return 'err';
    }
    var ptransmeta = transpar.getTransMeta();
    var arrs = trans.toString().split("\\.");
    var subname = arrs[arrs.length - 2].replace('\[', '').replace('\]', '');
    var topstep = ptransmeta.findStep(subname)
        return ptransmeta.getPrevStepNames(topstep)[0];
}
var pname = getSubPreStepName();
0 голосов
/ 26 февраля 2019

Я не знаю о суб-преобразовании, но вы можете использовать измененное значение скрипта Java, используя это:

var last_step = _step_.getInputRowSets();

Это вернет имя предыдущего шага, за которым следует имяВ текущем шаге (значение измененного сценария Java) вы можете извлечь это значение с помощью нескольких шагов очистки / разбиения строки.

Используя это с пустым шагом перед ним, он выводит эту строку:

[Dummy (ничего не делать) 2.0 - измененный Java Script Value.0]

...