我有这样的工作流程,
tAccessInput_1 --> tMap_1 --> tSortRow_1 --> tJava --> tBufferOutput_1。 这是否可以在每次迭代时在 tJava 组件中显示tBufferOutput_1中的数据。如果可能的话,我该怎么办?
我有这样的工作流程,
tAccessInput_1 --> tMap_1 --> tSortRow_1 --> tJava --> tBufferOutput_1。 这是否可以在每次迭代时在 tJava 组件中显示tBufferOutput_1中的数据。如果可能的话,我该怎么办?
如果您尝试将输入的任何内容输出到 tBuffer 组件中,请尝试连接到tLogRow组件,该组件将在控制台中输出所有内容。
如果您出于其他特定原因需要 tJava,这里有一个稍微复杂的方法:
tBufferOutput_1 -> tFlowToIterate -> tIterateToFlow -> tJava
然后,在 tJava 中,您可以执行以下操作: System.out.println((String) globalMap.get("row.column"));
在哪里:
row是 tIterateToFlow 到 tJava 之间的主要数据行的名称(例如 row6)
column是您要输出的任何架构列
数据被转换成一个字符串,但在你的情况下它可能是一个整数或其他东西。
您需要将流程更改为迭代的原因是因为 tJava 需要迭代才能打印所有行(正如您在问题中正确指出的那样)。
正如llaen所解释的,最好的解决方案是使用tLogRow在 Talend/Java 控制台中打印每一行。如果要自定义打印方式,最好使用 tJavaRow(而不是 tJava)以避免使用 tFlowToIterate 和 tIterateToFlow
tAccessInput_1 --> tMap_1 --> tSortRow_1 --> tJavaRow --> tBufferOutput_1
然后,在 tJavaRow 中,使用以下 java 代码:System.out.println(input_row.column)
其中:
input_row将被自动解释并被 Talend 代码生成器
列替换为您要输出的任何模式列