Hiveql 中带有 aggregate/analytic 函数的子查询
subquery with aggregate/analytic function in Hiveql
我想知道这是否合法:
INSERT OVERWRITE TABLE my_table
SELECT field_1, field_2,
(SELECT STDDEV(field_from_my_table)
FROM my_table
WHERE field_from_my_table !=0)
FROM my_table
GROUP BY field_1;
到目前为止,我还没能让它发挥作用。根据我的尝试,我会遇到无数错误,大部分是指示非法语法的随机错误。例如
cannot recognize input near 'SELECT' 'STDDEV'
然而,这确实有效:
INSERT OVERWRITE TABLE my_table
SELECT field_1, field_2, STDDEV(field_from_my_table)
FROM my_table
GROUP BY field_1;
所以基本上,我只是改变了我想使用 STDDEV 的方式 - 有效版本和无效版本之间没有其他区别。
如果不能这样做,为什么不呢?如果是,我需要什么更正?任何帮助将不胜感激。谢谢。
编辑:可能是这个 Nested queries in Hive SQL, this Hive column as a subquery select, or this Does Hive support Select in Select?
EDIT2:所以我认为更简单的问题可能是:
这有效,
INSERT OVERWRITE TABLE my_table
SELECT field_1, field_2, STDDEV(field_from_my_table)
FROM my_table
GROUP BY field_1;
这有效(作为交互式查询)
SELECT field_1, STDDEV(field_from_my_table)
FROM my_table
WHERE field_from_my_table !=0
GROUP BY field_1;
如何将两者合并为一个 table(新的或旧的)?
所以,简短的回答是我做了一个解决方法。由于我能够 运行 更详细的查询作为交互式查询,我决定尝试 运行 所述查询并插入 table。好吧,你得到了同样的错误。然而,事实证明,您可以 运行 查询,将其写入本地文件,然后从本地加载到新的 table。这解决了必须在查询中编写子查询的问题,我认为在这个特定实例中 Hive 不支持这种查询(或者在您无法成功编写子查询的情况下,就像我一样)。
确切的解决方案即将跟进...
我想知道这是否合法:
INSERT OVERWRITE TABLE my_table
SELECT field_1, field_2,
(SELECT STDDEV(field_from_my_table)
FROM my_table
WHERE field_from_my_table !=0)
FROM my_table
GROUP BY field_1;
到目前为止,我还没能让它发挥作用。根据我的尝试,我会遇到无数错误,大部分是指示非法语法的随机错误。例如
cannot recognize input near 'SELECT' 'STDDEV'
然而,这确实有效:
INSERT OVERWRITE TABLE my_table
SELECT field_1, field_2, STDDEV(field_from_my_table)
FROM my_table
GROUP BY field_1;
所以基本上,我只是改变了我想使用 STDDEV 的方式 - 有效版本和无效版本之间没有其他区别。
如果不能这样做,为什么不呢?如果是,我需要什么更正?任何帮助将不胜感激。谢谢。
编辑:可能是这个 Nested queries in Hive SQL, this Hive column as a subquery select, or this Does Hive support Select in Select?
EDIT2:所以我认为更简单的问题可能是: 这有效,
INSERT OVERWRITE TABLE my_table
SELECT field_1, field_2, STDDEV(field_from_my_table)
FROM my_table
GROUP BY field_1;
这有效(作为交互式查询)
SELECT field_1, STDDEV(field_from_my_table)
FROM my_table
WHERE field_from_my_table !=0
GROUP BY field_1;
如何将两者合并为一个 table(新的或旧的)?
所以,简短的回答是我做了一个解决方法。由于我能够 运行 更详细的查询作为交互式查询,我决定尝试 运行 所述查询并插入 table。好吧,你得到了同样的错误。然而,事实证明,您可以 运行 查询,将其写入本地文件,然后从本地加载到新的 table。这解决了必须在查询中编写子查询的问题,我认为在这个特定实例中 Hive 不支持这种查询(或者在您无法成功编写子查询的情况下,就像我一样)。
确切的解决方案即将跟进...