talend - 列值的输出文件名

时间:2017-03-08 08:11:05

标签: talend

我有一份现有职位:

tDatabaseInput - > tMap - > tOutputDelimited

对于最后一个组件,我将需要文件的文件名基于名为TYPE的列之一(对于每一行总是相同的)。名为TYPE的列的值为“A1”,对于数据库中的所有记录都是相同的。

先谢谢

2 个答案:

答案 0 :(得分:2)

有很多方法可以做到,但这里是最简单,更易读的工作:

https://solidgeargroup.com/gitlab_countinuous_integration_intro

  • tMySqlConnection_1:获取与数据库服务器的连接
  • tMysqlInput_1:查询表只获取如下值:

    select TYPE from my_table limit 1
    
  • tSetGlobalVar_1:key = "file_name",value = (String)row1.type

  • tMysqlInput_2:根据需要uqery表
  • tMap_1:映射您的数据
  • tFileOutputDelimited_1:filename = "C:\\Users\\KKL\\Desktop\\"+((String)globalMap.get("file_name"))

答案 1 :(得分:1)

您需要两个子作品,因为根据您的流程中的列提供文件名意味着此文件名是从另一个子作品中提取的。

您应该有第一个subjob将名为TYPE的列的值转换为上下文变量

abc

TDBInput:使用选择查询

从数据库中提取不同的TYPE列

tJavaRow:由于您在输出中只有一行,您可以将此值影响到上下文变量:TDBInput->tJavaRow

然后将第一个子工作连接到第二个子工作(tDatabaseInput - > tMap - > tOutputDelimited)

,并在文件名字段中的tFileOutputDelimited中使用此上下文变量 context.myVar=input_row.myColumn;