让PowerShell将结果传递给Pentaho
我有一个处理json字符串的PowerShell脚本。我的目标是将这个结果集传递给Pentaho,这样我就可以处理它并将其放入数据库表中 我的PowerShell脚本在Pentaho之外按预期工作。我可以解析文件并获得所需的信息,而不会出现任何问题。当我试图传递这些值时,Pentaho返回愚蠢的结果 这是我的剧本让PowerShell将结果传递给Pentaho,powershell,pentaho,pentaho-spoon,pentaho-data-integration,Powershell,Pentaho,Pentaho Spoon,Pentaho Data Integration,我有一个处理json字符串的PowerShell脚本。我的目标是将这个结果集传递给Pentaho,这样我就可以处理它并将其放入数据库表中 我的PowerShell脚本在Pentaho之外按预期工作。我可以解析文件并获得所需的信息,而不会出现任何问题。当我试图传递这些值时,Pentaho返回愚蠢的结果 这是我的剧本 $scriptMode = 'GetFileInfo' $json = '{ "building": [ { "buildingname": "NAPA Au
$scriptMode = 'GetFileInfo'
$json = '{
"building": [
{
"buildingname": "NAPA Auto Parts",
"files": [{
"sheets": [{
"name": "BATTERY",
"results": [{
"filename": "BATTERY - 1679568711.xlsx",
"sku": "1679568711"
}
]
}
],
"name": "2.15.19.xlsx",
"status": "processed",
"fileId": "c586bba6-4382-42c4-9c29-bffc6f7fe0b6"
}, {
"name": "Oct-Nov 2018 11.30.18.xlsx",
"errors": ["Unknown sheet name: TOILET PLUNGER"],
"status": "failed",
"fileId": "afa7c43f-26dc-421c-b2eb-45ad1e899c42"
}
]
},
{
"buildingname": "O''Reily Auto Parts",
"files": [{
"sheets": [{
"name": "ALTERNATOR",
"results": [{
"filename": "ALTERNATOR - 6.3.19 1629453444.xlsx",
"sku": "1629453444"
}
]
}, {
"name": "OIL FILTER",
"results": [{
"filename": "OIL FILTER - 6.3.19 1629453444.xlsx",
"sku": "1629453444"
}
]
}
],
"name": "6.3.19.xlsx",
"status": "processed",
"fileId": "647089fe-9592-4e2b-984f-831c4acd4d9c"
}
]
}
]
}'
$psdata = ConvertFrom-Json -InputObject $json
IF ($scriptMode -eq "GetFileInfo") {
$psdata.building | foreach-Object {
foreach ($File in $_.files)
{
[PSCustomObject]@{
BuildingName = $_.buildingname
FileName = $File.name
fileId = $File.fileId
Status = $File.status}
}
}
}
ElseIF ($scriptMode -eq "GetErrorInfo") {
$psdata.building | foreach-Object {
foreach ($File in $_.files)
{
[PSCustomObject]@{
BuildingName = $_.buildingname
Errors = $File.errors
SheetName = $File.sheets.name
fileId = $File.fileId} | Where-Object {$_.errors -ne $null}
}
}
}
下面是我的转换设置。我有一个表输入查询,它将根据我希望脚本执行的操作(获取文件信息或获取错误信息)设置PowerShell的run命令。
然后让“执行进程”步骤运行PowerShell命令
这是Pentaho中返回的内容与PowerShell返回的内容
我希望返回的结果与PowerShell返回的结果完全相同。我希望我可以在不将数据导出到其他格式的情况下完成这项工作。我们在Pentaho中只遇到Json输入步骤的问题,因此我们选择了PowerShell而不是Pentaho中的“修改的Javascript值”步骤
你知道我如何让它返回一个结果集(就像SQL查询返回的结果集)给Pentaho吗 最有可能的结果集返回的是整个内容,而不是您预期的“表格化”,它可能返回整个表格,所有表格都以一种长文本格式汇总,但仍然包含所有换行符/换行符 尝试在pentaho流中使用拆分步骤处理返回的字符串。首先,尝试使用分隔符为“${line.separator}”的“将字段拆分为行”。
从这里开始,您所要做的就是将整个内容拆分成pentaho中的表格。最有可能的结果集是返回整个内容,而不是像您预期的那样“表格化”,它可能返回整个表格,所有表格都以一种长文本格式汇总,但仍然有所有的换行符/换行符 尝试在pentaho流中使用拆分步骤处理返回的字符串。首先,尝试使用分隔符为“${line.separator}”的“将字段拆分为行”。
从这里开始,您所要做的就是将整个内容拆分,直到它成为pentaho中的一个表。在将数据返回pentaho之前,通过管道将数据传输到
Out String
,Out String
将返回一个字符串,该字符串将尽可能与您在屏幕上看到的格式化输出相匹配,我应该在哪里将其添加到我的代码中?我在我的foreach部分之后添加了它,它返回数据的方式与我的版本相同。在返回到Pentaho之前,通过Out String
导入数据-Out String
将返回一个尽可能与您在屏幕上看到的格式化输出匹配的字符串,我将在哪里将其添加到我的代码中?我在foreach节之后添加了它,它以与我的版本相同的方式返回数据