在Hive表中重命名具有名称计数(distinct(id))的列

时间:2018-04-27 13:23:41

标签: hive apache-spark-sql hiveql

我忘记在从SELECT语句在HIVE中创建表时为派生列指定别名。

CREATE TABLE temp AS (SELECT date, count(distinct(id)) FROM some_table GROUP BY date);

现在我想在派生列上使用过滤器查询新创建的临时表,我不想删除该表并再次使用派生列的别名运行相同的查询。

如何过滤列数(distinct(id)),或重命名该列?

2 个答案:

答案 0 :(得分:1)

您可以使用Maybe.fromCallable(() -> fitClass.getAid()) .switchIfEmpty(service.getReservedClasses(FitHelper.clientId) .flatMap(reservedClasses -> { // .... return fitClass.getAid()); })) .flatMap(id -> service.unbookClass(id)) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(...);

查看列名称
DESCRIBE

然后只需重命名列:

DESCRIBE temp;    
col1                    string                                      
_c1                     bigint                  

或使用ALTER TABLE temp CHANGE `_c1` `cnt` bigint; 列名:

_c1

答案 1 :(得分:0)

只需使用:

ALTER TABLE yourtable CHANGE `columnname` `newname` BIGINT;