2012-11-06 30 views
1

我想从MsSQL导入数据到HBase,运行一个自由格式查询,该查询在我想要拆分的键上有一个别名。例如我的查询是:以别名拆分的Sqoop自由格式查询

SELECT  convert(varchar,Table1.Field1) + '_' + Table2.field1 AS 'xyz' 
FROM   Table1 
INNER JOIN Table2 
ON   Table1.field3 = Table2.field4 
WHERE  $CONDITIONS 

而且我想通过此别名字段拆分工作单元。所以,在我的sqoop查询中,我有--split-by 'xyz'选项。但是,这不起作用。我得到:

Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: 
Ambiguous column name 'xyz'. 

那么,如何让sqoop使用这个别名选择字段工作?

回答

1

这是SQL-Server的限制。它不允许在别名列上使用GROUP BY。

将查询重写以下列方式帮助:

SELECT xyz FROM 
(
    SELECT  convert(varchar,Table1.Field1) + '_' + Table2.field1 AS 'xyz' 
    FROM   Table1 
    INNER JOIN Table2 
    ON   Table1.field3 = Table2.field4 
) as sub 
WHERE $CONDITIONS