在 Pentaho 中读取上一步数据的 JavaScript 代码

问题描述 投票:0回答:2

我有输入 excel,需要使用 JavaScript 代码读取 Pentaho 工具中“修改的 JavaScript 值”步骤中的数据。

输入excel包含:

名称城市

维奈海得拉巴

拉维尼扎马巴德

尝试下面的代码从Excel读取数据并在Pentaho工具中的修改JavaScript值步骤中生成html格式的数据:

var inputRowMeta = getInputRowMeta();
 
var numFields = inputRowMeta.size();
 
// Define the HTML content
var htmlContent = "<html><head><title>Generated HTML</title></head><body><table border='1'><tr><th>Name</th><th>City</th></tr>";

 
var rows;
// Loop through the rows
for(var i=0; i<numFields; i++) {
    // Access data from the rows
    var column1Value = getVariable("Name", i);
    var column2Value = getVariable("City", i);
    // Append row to HTML content
    htmlContent += "<tr><td>" + column1Value + "</td><td>" + column2Value + "</td></tr>";
}
// Close HTML content
htmlContent += "</table></body></html>";
// Write HTML content to a file
var file = new java.io.File("C:\\Users\\Admin\\file.html");
var writer = new java.io.FileWriter(file);
writer.write(htmlContent);
writer.close();

输出在此输入图片描述

我得到 0,1 值而不是实际值,任何帮助将不胜感激

javascript pentaho
2个回答
0
投票

您在这里混淆了很多概念。

PDI 中的步骤是逐行工作的,它们不会对整个数据集进行操作,而是对批量行进行操作。行有字段。

您使用

getVariable
函数读取的变量不是行中的字段,而是以下变量: a) 由在执行该转换之前运行的作业或转换设置; b) 作为参数传递给转换;或 c) 在全局配置文件中设置。

在您的情况下,代码读取变量

Name
City
,但这些不是变量,它们是字段。由于变量未定义,因此
i
函数中的
getVariable
只是默认值。这就是为什么你得到 1 或 0。

我建议您在尝试执行此操作之前首先了解 PDI 的工作原理。更简单的工作流程如下:

Text file input -> Javascript Step -> Group by step -> Javascript step

第一个 javascript 步骤只有

var tr =  <tr><td>" + Name + "</td><td>" + City + "</td></tr>

这一步将为每行数据生成1行HTML,称为

tr

分组然后将它们全部组合起来,并使用

tr
字段生成一个新字段,我们通过连接所有字段将其称为
tbody

然后最后一个 javascript 步骤前置并附加开始和结束代码块:

var htmlContent = "<html><head><title>Generated HTML</title></head><body><table border='1'><tr><th>Name</th><th>City</th></tr>";

htmlContent += tbody;
htmlContent += </table></body></html>;

然后您可以使用文本文件输出步骤将其输出到文本文件。


0
投票

感谢您的信息,我尝试了以下步骤:

1.JavaScript步骤: JavaScript 第一步

2.分组步骤: 按步骤分组

3.JavaScript第二步: 第二个 JavaScript 步骤

4.输出: 输出

请检查随附的输出快照,它没有打印 Nama 和 City 列的数据。

请您检查并指导我哪里出错了

© www.soinside.com 2019 - 2024. All rights reserved.