下面是我为一个基本的五旬节转换工作修改的javascript。从2行(不包括标题行) csv文件输入中生成xml输出文件。如果我删除了第1行和最后一行代码,那么虽然它处理了所有行,但没有出错。
问题1:我如何正确地跳过csv文件中的第2行。
问题2:获得数字/字符串等输入字段数据类型的正确方法是什么?getValueMeta函数提供了许多我不需要的附加内容。
我的csv文件如下:

我的转变如下:

//Script here
trans_Status = CONTINUE_TRANSFORMATION;
var column_name = "SSTI_pre-trade";
var column_index = getInputRowMeta().indexOfValue(column_name);
var column_value = row[column_index];
var column_type=getInputRowMeta().getValueMeta(column_index)
writeToLog("b", column_type);
var converted_number=getInputRowMeta().getNumber(row,column_index);
var skip_number=getInputRowMeta().getNumber(row,6);
writeToLog("b", skip_number);
var msg = 'Hello, ' + num2str(converted_number) + "!";
if (skip_number = 2) {trans_Status = SKIP_TRANSFORMATION;}下面是跳过转换不起作用时的日志,但它表明skip_number变量值是正确的。
2022/03/16 18:46:22 - HelloWorld - Dispatching started for transformation [HelloWorld]
2022/03/16 18:46:22 - XML output.0 - Opening output stream in encoding: UTF-8
2022/03/16 18:46:22 - CSV file input.0 - Header row skipped in file 'file:///D:/Pentaho_projects/Hello_world/sample2.csv'
2022/03/16 18:46:22 - CSV file input.0 - Finished processing (I=3, O=0, R=0, W=2, U=0, E=0)
2022/03/16 18:46:22 - Modified JavaScript value.0 - Optimization level set to 9.
2022/03/16 18:46:22 - Modified JavaScript value.0 - SSTI_pre-trade Integer(15)<binary-string>
2022/03/16 18:46:22 - Modified JavaScript value.0 - 1.0
2022/03/16 18:46:22 - Modified JavaScript value.0 - SSTI_pre-trade Integer(15)<binary-string>
2022/03/16 18:46:22 - Modified JavaScript value.0 - 2.0
2022/03/16 18:46:22 - Modified JavaScript value.0 - Finished processing (I=0, O=0, R=2, W=0, U=0, E=0)
2022/03/16 18:46:22 - Spoon - The transformation has finished!!发布于 2022-03-17 17:18:05
我不知道您的第二个问题,但对于第一个问题,如果您有从csv跳过的行的固定条件,即,正如您已经说过的,您想跳过第二行,最简单的方法是在配置带有行号的步骤时读取csv并添加一列,然后使用条件行号<> 2添加一个筛选行步骤:

https://stackoverflow.com/questions/71497872
复制相似问题