gpt4 book ai didi

mysql - 在 Talend 中创建一个全局变量以用作另一个组件中的过滤器

转载 作者:行者123 更新时间:2023-11-30 22:23:36 25 4
gpt4 key购买 nike

我在 Talend 的工作旨在将来自不同数据库的一些数据汇集在一起​​:一个是 MySQL 数据库,另一个是 MSSQL 数据库。

我想做的是将 MySQL 数据库中的一组贷款号码(大约 82,000 个贷款号码)与我们在 MSSQL 数据库中存储的相应信息相匹配。

但是,我从 MySQL 中加入数据的 MSSQL 中的表要大得多(约 200 万行),非常宽,因此查询要花费更多的时间。理想情况下,我可以根据贷款号在两个表之间执行内部联接,但由于它们位于不同的数据库中,所以这是不可能的。在 tMap 内部执行的内部联接发生在查找输入已经返回其数据集之后,该数据集非常大(特别是因为这个特定的 MSSQL 查询将为每个贷款号执行用户定义的函数)。

有什么方法可以从 MySQL 查询的输出(即 MySQL 查询选择的贷款编号)中创建一个全局变量,并将该全局变量用作 MSSQL 查询中的 IN 子句?

最佳答案

这应该是可能的。我不在 MySQL 中工作,但我这里有一些大致相同的东西,我认为你应该能够适应你的需要。

我从来没有真正回答过 Stackoverflow 的问题,当我输入这个时,页面开始告诉我我需要至少 10 个声誉才能在这里发布超过 2 个图片/链接,我想我需要 4 个图片,所以我只想在这里用文字写出来,并张贴完整的插图 on my blog如果您需要更多信息(我认为很有可能!)

如您所见,我从表中获取了一些数据并通过 tFilterRow_1 过滤以仅显示我感兴趣的行。

下一步是将其限制为我想在变量中使用的字段。我使用了 tMap_3 而不是 tFilterColumns,因为我使用的字段是一个字符串,我希望能够在它周围连接单引号,但如果您使用的是整数,则可能不需要这样做。当然,如果你有很多重复,你可能还想在那里得到一个 tUniqueRows 以节省很多不必要的重复

下一步是施展魔法的步骤。我有一个这样的列表:

  • 'A1'
  • 'A2'
  • 'B1'
  • 'B2'

等,我想把它变成 'A1','A2','B1','B2' 这样我就可以把它放到我的 where 子句中。为此,我使用了 tAggregateRow_1,选择“列表”作为要使用的聚合函数。

接下来,我们要获取此列表并将其放入上下文变量(我已经在元数据中创建了上下文变量 - 你知道怎么做,对吧?)。使用另一个 tMap 组件,输入 tContextLoad 小部件。 tContextLoad 在其架构中始终有两列,因此将 tAggregateRows 的输出映射到“值”列并在“键”中输入变量的名称。在此示例中,我的上下文变量称为 MyList

现在您的列表已作为文本字符串加载并存储在上下文变量中以备检索。所以打开一个新的输入并像这样在sql代码中嵌入变量

"SELECT distinct MY_COLUMN from MY_SECOND_TABLE where the_selected_row in ("+ context.MyList+")"

它应该就这么简单,当我启动它时,它第一次成功了,但如果您遇到任何问题,请告诉我,我会尽力而为。

关于mysql - 在 Talend 中创建一个全局变量以用作另一个组件中的过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35989789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com