Hive應用:設置字段自增

Hive應用:設置字段自增

介紹

語法:sql

ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)

簡單的說row_number()從1開始,爲每一條分組記錄返回一個數字,這裏的ROW_NUMBER() OVER (ORDER BY xlh DESC) 是先把xlh列降序,再爲降序之後的每條xlh記錄返回一個序號。apache

以上是row_number() over()的基本用法,下面本人就給他賦予一個新的用法。bash

字段自增

當你要往一個表中導入數據時,須要一個自增的id字段,那麼就須要使用如下兩個函數搭配產生:row_number() over()函數

若是什麼參數都不加,直接使用這兩個字段,那麼直接產生的是從1開始增長的數字。oop

例如:spa

insert into table User_Attribute select row_number() over() as id,customid from tbl_custom;

若是單獨使用函數row_number(),則會報錯,錯誤內容以下:.net

FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: Only COMPLETE mode supported for row_number function

指定自增基數

那麼上面的自增完成了,確定會有指定一個基數進行自增的需求,這個時候怎麼辦呢?code

本人曾經試着在兩個方法的括號裏填寫參數,實在是作不到,那麼本人就從另外一個角度進行思考,想出了以下格式的方式:blog

(row_number() over())+number

number即爲你指定的基數,上面的語句就能夠寫成以下:hadoop

insert into table User_Attribute select (row_number() over())+1000 as id,customid from tbl_custom;

那麼此時插入Hive表中的數據就是從1000開始增長的ID。插入的下一條的id就爲1001,依次遞增。

上一篇:Hive應用:數據外置內部表

下一篇:Hive應用:設置字段默認值

相關文章
相關標籤/搜索