【问题标题】:Talend Run If Trigger with context variables带有上下文变量的 Talend Run If Trigger
【发布时间】:2021-08-03 09:08:07
【问题描述】:

我有一个关于作业输出的问题。

是否可以使作业的输出动态化? 我的意思是能够通过属性或其他东西配置想要的输出?用户应该能够通过修改属性来选择他希望将数据导入到什么样的数据库中。

显然,这可以使用 runIf 来完成 - 不幸的是,我不知道该怎么做。

运行 if 只能用于布尔值。例如,当满足某个条件时,文件的存在(或不存在),如果返回的行数大于 100,以及无数其他条件。

如何检查上下文变量是否等于特定字符串?例如,如果 context.test = "postgres" 那么 tpostgresqloutput,如果 context.test = "snowflake" 那么 tsnowflakeoutput?

例如

job > tPostgresqlOutput > run if > context.test = "postgres"
job > tsnowflakeoutput > run if > context.test = "snowflake"

谢谢, BR

【问题讨论】:

    标签: talend talend-mdm


    【解决方案1】:

    对于RunIf中的String比较,可以使用:

    context.test.equalsIgnoreCase("postgres")
    

    您可能希望将适当的数据流连接到上述 RunIf,具体取决于它是 postgres 还是雪花。

    【讨论】:

    • 感谢您的帮助,这会导致类型不匹配 - 无法从布尔值转换为字符串
    • RunIf 中的条件应该计算为布尔值,这就是表达式的作用。我假设您的 context.test 变量是 String 数据类型。您在哪里得到“无法从布尔值转换为字符串”错误?
    • 没错,我的 context.test 是一个字符串数据类型。 tMap -> tjavarow -> runif -> db 是我所做的
    • RunIf 用于控制流,而不是数据流。您可能需要像这样更改流程:RunIf -> Source -> tMap -> tJavaRow -> db_postgres。如果 context.test 是 postgres,这将是 runIf 的 order1。在 order2 中,您可以对雪花执行相同的操作。
    • 更有意义。我会试试看,然后告诉你它是怎么回事。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    • 2020-03-11
    相关资源
    最近更新 更多