Mysql 在Talend中创建全局变量以用作其他组件中的过滤器

Mysql 在Talend中创建全局变量以用作其他组件中的过滤器,mysql,sql-server,talend,Mysql,Sql Server,Talend,我在Talend有一份工作,旨在汇集来自不同数据库的一些数据:一个是MySQL数据库,另一个是MSSQL数据库 我想做的是将MySQL数据库中的贷款编号(大约82000个贷款编号)与我们在MSSQL数据库中存储的相应信息进行匹配 但是,我将MySQL中的数据加入到MSSQL中的表要大得多(约200万行),而且非常宽,因此查询时间要长得多。理想情况下,我可以根据贷款编号在两个表之间执行内部联接,但由于它们位于不同的数据库中,这是不可能的。在tMap内执行的内部联接发生在查找输入已经返回其数据集之后

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

我想做的是将MySQL数据库中的贷款编号(大约82000个贷款编号)与我们在MSSQL数据库中存储的相应信息进行匹配

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


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

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

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

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

下一步是将其限制为我想在变量中使用的字段。我使用了tMap_3而不是tFilterColumns,因为我使用的字段是字符串,我希望能够在其周围串联单引号,但如果使用的是整数,则可能不需要这样做。当然,如果重复次数很多,可能会出现错误我还想在里面放一个长袍,这样可以避免很多不必要的重复

下一步是实现魔法的步骤。我有如下列表:

  • “A1”
  • “A2”
  • “B1”
  • “B2”
等等,我想把它转换成'A1','A2','B1','B2',这样我就可以把它插入我的where子句中。为此,我使用了tAggregateRow_1,选择“list”作为要使用的聚合函数

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

现在您的列表作为文本字符串加载并存储在上下文变量中,以便检索

“选择不同的MY_列 从我的第二个表格中,在该表格中选择了行(“+ context.MyList+“””


这应该很简单,当我第一次启动它时,它就工作了,但是如果您有任何问题,请告诉我,我会看看我能做些什么。

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

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

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

下一步是将其限制为我想在变量中使用的字段。我使用了tMap_3而不是tFilterColumns,因为我使用的字段是字符串,我希望能够在其周围串联单引号,但如果使用的是整数,则可能不需要这样做。当然,如果重复次数很多,可能会出现错误我还想在里面放一个长袍,这样可以避免很多不必要的重复

下一步是实现魔法的步骤。我有如下列表:

  • “A1”
  • “A2”
  • “B1”
  • “B2”
等等,我想把它转换成'A1','A2','B1','B2',这样我就可以把它插入我的where子句中。为此,我使用了tAggregateRow_1,选择“list”作为要使用的聚合函数

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

现在您的列表作为文本字符串加载并存储在上下文变量中,以便检索

“选择不同的MY_列 从我的第二个表格中,在该表格中选择了行(“+ context.MyList+“””


这应该很简单,当我第一次启动它时,它就工作了,但是如果您有任何问题,请告诉我,我会看看我能做些什么。

您尝试过从SQL server到MySQL的链接服务器连接吗?您尝试过吗