我有桌面测试。它有一个专栏' abc group'
我想要一个查询
选择abc group
,sum(someothercolumn)
来自abc group
即使使用反引号(`),查询也会失败。 hive开始将列名称中的组视为组关键字
答案 0 :(得分:0)
还在group by子句中包含反引号(`)。
我通过重新创建您的方案尝试了以下查询
hive> select * from so;
+------------+------+--+
| abc group | sal |
+------------+------+--+
| abc | 10 |
| def | 20 |
| abc | 20 |
| def | 30 |
+------------+------+--+
现在我正在尝试按 abc group 进行分组 列和 sum(sal)
hive> select `abc group`,sum(sal) sum from so group by `abc group`;
+------------+------+--+
| abc group | sum |
+------------+------+--+
| abc | 30 |
| def | 50 |
+------------+------+--+
<强> Scenario1: - 强> 如果您将abc组列包含在单引号(或)双引号中,则hive会将它们视为字符串文字值,并且当我们与反引号(`)进行比较时结果会有所不同。
hive> select "abc group",sum(sal) sum from so group by "abc group";
+------------+------+--+
| _c0 | sum |
+------------+------+--+
| abc group | 80 |
+------------+------+--+
所以在上面的例子中,我将双引号hc中的abc组视为字符串并按组进行,因此sum(sal) 80 。
<强> Scenario2: - 强>
在此方案组中按abc group列,但在select中具有“abc group”值。
hive> select "abc group",sum(sal) sum from so group by `abc group`;
+------------+------+--+
| _c0 | sum |
+------------+------+--+
| abc group | 30 |
| abc group | 50 |
+------------+------+--+
hive根据abc组列数据进行分组但是在select中我们没有提到带有反引号(`)的abc组但是我们保留了字符串值(“abc group”)。因此,对于_c0列具有相同值的两个组。