Hive的分析函數的使用

2021-01-08 分享電腦學習

我們先準備資料庫、表和數據

開窗分析函數相對於mysql中的聚合函數區別是:分析函數是基於某個組多個數據進行計算聚合,而聚合函數是每個組返回一行數據。

官網

我們先做個例子感受下:

要求: 查詢部門編號為10的所有的員工,按照薪資降序排序

Mysql實現:select empno,ename,deptno,sal from emp where deptno=10 order by sal desc;

如果要求是:將每個部門薪資最高的那個人的薪資顯示在最後一行。

select empno,ename,deptno,sal, max(sal) over(partition by deptno order by sal desc) as sal_max from emp;

我們看官網這個位置

我們來解釋裡面的概念

當前有一個數據

CURRENT ROW

UNBOUNDED PRECEDING 初始行

PRECEDING 前一行

CURRENT ROW 當前行

FOLLOWING 後一行

UNBOUNDED FOLLOWING 最後一行

所以上面的語句我們變動下

select empno,ename,deptno,sal, max(sal) over(partition by deptno order by sal desc ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as sal_max from emp;

可以控制窗口大小

結果是一樣的,但是窗口大小我們做了變化

我們準備數據

創建一個表

載入數據

load data local inpath '/data/hivetest/anal.txt' into table analytical;

語句1:

我們看結果

語句2

語句3

語句4

語句5

語句6

已上是窗口和基本語句的使用。

我們來看ROW_NUMBER

將每個部門薪資最高的那個人的薪資降序排序並且顯示唯一的編號ROW_NUMBER

獲取每個部門薪資最高的前兩位(嵌套子查詢)

相關焦點

  • Hive常用的函數總結
    靈活地運用Hive提供的函數能夠極大地節省數據分析成本。Hive函數主要包含數學函數,集合函數,類型轉換函數,日期函數,條件函數,字符串函數,聚合函數和表生成函數等。1、數學函數        數學函數是Hive內部提供的專門用於數學運算的函數,如round()函數和sqrt()函數等。
  • Hive窗口函數/分析函數詳解
    hive窗口函數/分析函數在sql中有一類函數叫做聚合函數,例如sum()、avg()、max()等等,這類函數可以將多行數據按照規則聚集為一行,一般來講聚集後的行數是要少於聚集前的行數的。但是有時我們想要既顯示聚集前的數據,又要顯示聚集後的數據,這時我們便引入了窗口函數。窗口函數又叫OLAP函數/分析函數,窗口函數兼具分組和排序功能。
  • Hive(七) ----函數
    窗口函數又叫開窗函數,屬於分析函數一種,解決複雜報表統計需求的功能。用於計算基於組的某種聚合值,和聚合函數不同,對於每個組返回多行,聚合函數隻返回一行。窗口函數制定了分析函數工作的數據窗口大小,這個數據窗口大小可能會隨著行的變化而變化。
  • 【乾貨】Hive常用函數大全
    >10、對數函數: log語法: log(double base, double a)返回值: double說明: 返回以base為底的a的對數舉例:hive> select log(4,256) from lxw_dual;4.011、冪運算函數: pow
  • hive函數
    :數學函數,字符函數,日期函數,條件函數,聚合函數。高級內置函數:行列轉換函數,分析性函數。自定義函數:udf。以上是小編自己整理分類的,網上也有很多不同分類的版本,下圖就是在別人博客中我覺得比較好的分類方法。
  • 常用Hive函數的學習和總結
    今天來小結一下工作中經常會使用到的一些Hive函數。關於Hive函數的總結,網上早有十分全面的版本。參考:https://blog.csdn.net/doveyoung8/article/details/80014442。本文主要從最常用和實用的角度出發,說明幾個使用頻率較高的函數,更注重使用函數組合來解決實際問題而不局限於單個函數的使用。
  • Hive與MapReduce相關排序及自定義UDF函數
    默認設置在hive中可以看到如果我們使用下面的排序,是否reduce的數量有關係呢?有兩個注意的地方(1)可以按照指定的欄位進行分區(2)先分區後排序,一般和sort by聯合使用執行語句insert overwrite local directory '/data/hivetest/cluster_test' ROW FORMAT
  • HiveSql基礎函數使用(一)
    一、hive函數1、關係函數2、日期函數3、條件函數4、字符串函數5、統計函數二、hiveQL、grouping sets()函數一、hive函數1、關係函數等值比較: =語法:A=B。舉例:select * from dw.topic_order where partition_pay_date = '2016-04-22' and client_type like 『ip%』 ##能夠匹配以ip開頭的所有字符串注意:對特殊字符進行轉譯時,注意要使用兩個反斜槓
  • hive常用函數
    舉例:date_sub ('2020-02-12', 10)結果:2020-02-02返回日期時間欄位中的日期部分•to_date('yyyy-MM-dd HH:mm:ss')2.條件函數if函數•if(條件表達式,結果1,結果2) 當條件為true時,返回結果1,否則結果2舉例:if(2>1,'是','否')
  • hive sql 優化心得
    如何寫好一個hql作為一個數據開發工程師,hive sql是我們必備的技能,可能大家都知道一些基本的優化方法(例如:使用分區、小表join大表、不使用distinct、where條件儘量寫到子查詢裡面減少數據量等等),但是你有沒有想過為什麼?是不是真的對執行效率有提升。
  • Hive 不為人知 但 到處都是Hook!
    ); // 依次執行各鉤子的功能(preDriverRun 函數完成)。從這個意義上講,提供了使用hive擴展和集成外部功能的能力。換句話說,Hive hadoop可用於在查詢處理的各個步驟中運行/注入一些代碼。根據鉤子的類型,它可以在查詢處理期間的不同點調用:1.Pre-execution Hook 在執行引擎執行查詢之前被調用。這個需要在 Hive 對查詢計劃進行過優化之後才可以使用。
  • Hive SQL基本使用詳解
    Hive 的最佳使用場合是大數據集的批處理作業。Hive SQL 與 SQL的區別:HQL不支持行級別的增(insert into table values)、改、刪,所有數據在加載時就已經確定,不可更改。
  • Hive數據倉庫實戰
    同時,這個Hive也允許熟悉 MapReduce 開發者的開發自定義的 mapper 和 reducer 來處理內建的 mapper 和reducer無法完成的複雜的分析工作。比如UDF函數。簡單來講,Hive從表面看來,你可以把他當成類似Mysql差不多的東西,就是個資料庫而已。按本質來講,他也並不是資料庫。
  • Hive窗口函數row number的用法, 你肯定都會吧!
    row_number前面我們介紹窗口函數的時候說到了窗口函數的使用場景,我們也給它起了一個名字進行區分,通用窗口函數和特殊窗口函數,今天我們就來看一下排序相關的窗口函數,因為是窗口函數,並且我們說它是用來排序的,我們大概也能猜到它就是用來對窗口內的數據進行排序的其實關於排序我們前面也介紹過order by,sort by 等排序的方式Hive語法之常見排序方式
  • Hive SQL 第一篇:常用的內置函數
    ❝最近使用 hive sql比較多,碰到了很多函數操作,所以想簡單總結一下 hive sql 常用的函數用法,沉澱一下以便之後查閱,希望也能給大家提供一些參考。❞字符串函數字符串拼接函數-- 返回多個字符串拼接後的結果,返回string類型-- 用法concat(string a, string b...)
  • HIVE 窗口函數實戰
    HIVE 窗口函數詳解中,我們介紹了hive窗口函數的定義和語法,本篇中我們根據例子來進行實戰。row_number()函數,唯一排序,不會生成排序相同的用戶示例和結果如下:可以看到,一班的學生三和學生四同樣為90分的學生,會按照不同的排名進行排名。rank()函數,不唯一排序,相同分數排名會相同,但後續排名會跳過。
  • hiveSQL常見面試題
    小編前幾天去面試了一個大數據分析的崗位,學習了幾個月信心滿滿的小編被無情的面試教育了,被教育的不是一些高深的算法理論,而是一些hiveSQL。這些題小編真不是不會,場景都非常熟悉,但就是容易忘。今天小編整理了一點常用場景的hiveSQL,很可能就能在面試中幫到你。場景一:分組求TopN先看數據:
  • Hadoop數據分析之Hive
    對AST進行語法分析,比如表是否存在、欄位是否存在、SQL語義是否有誤• 編譯器(Physical Plan):將AST編譯生成邏輯執行計劃• 優化器(Query Optimizer):對邏輯執行計劃進行優化• 執行器(Execution):把邏輯執行計劃轉換成可以運行的物理計劃。
  • 一文搞定Hive函數,建議收藏!
    導讀:工欲善其事必先利其器,hive是我們與大數據打交道的工具,所以我們需要熟練使用hive的一些函數,這樣後面的數據開發就得心應手啦。廢話不多說直接上乾貨。目錄如下1、數據準備2、字符函數3、聚合函數4、數學函數5、時間函數
  • 一網打盡Hive高頻面試題
    (1)date_add、date_sub函數(加減日期)(2)next_day函數(周指標相關)(3)date_format函數(根據格式整理日期)(4)last_day函數(求當月最後一天日期)(5)collect_set函數(6)get_json_object解析json函數(7)NVL(表達式1,