如何获取派生列名并在同一查询中使用它?

xfb7svmp  于 2021-05-27  发布在  Hadoop
关注(0)|答案(2)|浏览(381)

我正在尝试运行以下查询:

select [every_column],count(*) from <table> group by [every_column] having count(*) >1

但是列名应该在同一个查询中派生。我相信show columns in会列出用新行分隔的列名。但是我需要在一个查询中使用它来检索结果。感谢您在这方面的帮助。

cvxl0en2

cvxl0en21#

你可以用 shell sed 搜索 newlines(\n) 并替换为 comma(,) .
将逗号分隔的列名指定给 hive variable ,在配置单元查询中使用变量名。
sed和set配置单元变量的引用

bvjveswy

bvjveswy2#

你想过使用子查询甚至cte吗?也许这能帮你找到答案:

select outer.col1,
       outer.col2,
       outer.col3,
       outer.col4,
       outer.col5,
       outer.col6, count(*) as cnt
from (
        select <some logic> as col1,
               <some logic> as col2,
               <some logic> as col3,
               <some logic> as col4,
               <some logic> as col5,
               <some logic> as col6
        from innerTable
)outer
group by outer.col1,
       outer.col2,
       outer.col3,
       outer.col4,
       outer.col5,
       outer.col6

相关问题