greenplum row-Join 和 Filter 不起作用
tgreenplumrow-Join and Filter is not woking
当我尝试在 tgreenplumRow 组件中执行多个查询时。
它不允许我加入和过滤查询。
输入信息
源和目标 table 都在 greenplum 中
源table - 指向名为 HDFS 的外部源
目标 TABLE - greenplum 数据库中的常规 table
像这样
SQL 交易
Begin;
"insert into target_tbl (select S.* from source_tbl s "LEFT JOIN" target_tbl d ON s."PK"=d."PK" where d."PK" is null) ;
UPDATE target_tbl d
SET
"COL" = s."COL"
FROM source_tbl s
WHERE s."PK"=d."PK" and d."COL" != s."COL"
;
END;
我得到的错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Syntax error on tokens, delete these tokens
实际数据流为
tgreenplumconnection
|
tjdbcinput -->tmap -->thdfsoutput -->tgreenplumrow -->tgreenplumcommit
Q1:如何运行在 txxxROW 组件中使用 Join 和 filter 进行多个查询。
Q2: 是否可以在 tmap 中处理上述源文件和目标文件场景?
如有任何帮助,我们将不胜感激?
在 tgreeenplumrow 组件中,您只需将查询放在双引号之间,例如
"Begin;
insert into target_tbl (select S.* from source_tbl s LEFT JOIN target_tbl d ON s.PK=d.PK where d.PK is null) ;
UPDATE target_tbl d
SET
COL = s.COL
FROM source_tbl s
WHERE s.PK=d.PK and d.COL != s.COL;
END;"
希望这对您有所帮助。
我喜欢将这些查询分解成单独的部分。在您的情况下,您想关闭连接上的自动提交。
所以在映射之后你有 2 个 greenplumRows 和 1 个提交组件。
我认为这使代码更易于理解和调试,因为现在您不知道插入或更新是否会引发错误。
不要忘记用 \ 字符转义 \ 和双引号。我认为这是给你带来麻烦的原因。
t*row 只是简单地将您写入数据库的查询传递给数据库。
当我尝试在 tgreenplumRow 组件中执行多个查询时。 它不允许我加入和过滤查询。
输入信息
源和目标 table 都在 greenplum 中
源table - 指向名为 HDFS 的外部源
目标 TABLE - greenplum 数据库中的常规 table
像这样
SQL 交易
Begin;
"insert into target_tbl (select S.* from source_tbl s "LEFT JOIN" target_tbl d ON s."PK"=d."PK" where d."PK" is null) ;
UPDATE target_tbl d
SET
"COL" = s."COL"
FROM source_tbl s
WHERE s."PK"=d."PK" and d."COL" != s."COL"
;
END;
我得到的错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Syntax error on tokens, delete these tokens
实际数据流为
tgreenplumconnection
|
tjdbcinput -->tmap -->thdfsoutput -->tgreenplumrow -->tgreenplumcommit
Q1:如何运行在 txxxROW 组件中使用 Join 和 filter 进行多个查询。
Q2: 是否可以在 tmap 中处理上述源文件和目标文件场景?
如有任何帮助,我们将不胜感激?
在 tgreeenplumrow 组件中,您只需将查询放在双引号之间,例如
"Begin;
insert into target_tbl (select S.* from source_tbl s LEFT JOIN target_tbl d ON s.PK=d.PK where d.PK is null) ;
UPDATE target_tbl d
SET
COL = s.COL
FROM source_tbl s
WHERE s.PK=d.PK and d.COL != s.COL;
END;"
希望这对您有所帮助。
我喜欢将这些查询分解成单独的部分。在您的情况下,您想关闭连接上的自动提交。 所以在映射之后你有 2 个 greenplumRows 和 1 个提交组件。
我认为这使代码更易于理解和调试,因为现在您不知道插入或更新是否会引发错误。
不要忘记用 \ 字符转义 \ 和双引号。我认为这是给你带来麻烦的原因。
t*row 只是简单地将您写入数据库的查询传递给数据库。