在 sqoop 查询中连接两个表时的算术运算
Arithmetic operation while joining two tables in a sqoop query
我有一个 Teradata 查询可以在 Teradata SQL 助手中正确运行,但在 sqoop
脚本中写入时显示错误。
查询使用如下条件对三个表进行联接:
...
From tableA as A \
Inner Join tableB as B\
Inner Join tableC as C \
On (B.ID = C.ID and (100*year(A.dt) + month(A.dt)) = C.curr_dt) \
...
我在 sqoop 中得到的错误来自于乘法。
15/01/06 00:44:01 ERROR manager.SqlManager: Error executing statement: com.teradata.jdbc.jdbc_4.util.JDBCException: [Teradata Database] [TeraJDBC xx.yy.zz.ww] [Error 3706] [SQLState 42000] Syntax error: expected something between '*' and the 'year' keyword.
在 sqoop
的 join 中不能进行算术运算吗?我还没有找到任何资源来帮助我解决这个问题。任何帮助将不胜感激。
谢谢!
YEAR 和 MONTH 不是有效的 Teradata SQL,两者都是 ODBC 语法,由 ODBC 驱动程序自动重写。
试试 EXTRACT(YEAR FROM A.dt)
。
我有一个 Teradata 查询可以在 Teradata SQL 助手中正确运行,但在 sqoop
脚本中写入时显示错误。
查询使用如下条件对三个表进行联接:
...
From tableA as A \
Inner Join tableB as B\
Inner Join tableC as C \
On (B.ID = C.ID and (100*year(A.dt) + month(A.dt)) = C.curr_dt) \
...
我在 sqoop 中得到的错误来自于乘法。
15/01/06 00:44:01 ERROR manager.SqlManager: Error executing statement: com.teradata.jdbc.jdbc_4.util.JDBCException: [Teradata Database] [TeraJDBC xx.yy.zz.ww] [Error 3706] [SQLState 42000] Syntax error: expected something between '*' and the 'year' keyword.
在 sqoop
的 join 中不能进行算术运算吗?我还没有找到任何资源来帮助我解决这个问题。任何帮助将不胜感激。
谢谢!
YEAR 和 MONTH 不是有效的 Teradata SQL,两者都是 ODBC 语法,由 ODBC 驱动程序自动重写。
试试 EXTRACT(YEAR FROM A.dt)
。