日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Hive?HQL支持2種查詢語句風格_數據庫其它

作者:數據人阿多 ? 更新時間: 2022-08-16 編程語言

背景

在平時業務運營分析中經常會提取數據,也就是大家俗稱的Sql Boy,表哥表姐,各大公司數據中臺現在大部分用的都是基于Hadoop的分布式系統基礎架構,用的比較多的有Hive數據倉庫工具,數據分析師在數據查詢時用的就是HQL,語法與Mysql有所不同,基本每天都會寫大量的HQL語句,但你有試過哪些風格的寫法呢?哪種風格的查詢語句更容易理解呢?可能不同的人有不同的看法,下面展示具體的風格代碼樣式,看看你喜歡哪種

  • Hadoop是一個由Apache基金會所開發的分布式系統基礎架構。用戶可以在不了解分布式底層細節的情況下,開發分布式程序。充分利用集群的威力進行高速運算和存儲。Hadoop實現了一個分布式文件系統( Distributed File System),其中一個組件是HDFS(Hadoop Distributed File System)
  • hive是基于Hadoop的一個數據倉庫工具,用來進行數據提取、轉化、加載,這是一種可以存儲、查詢和分析存儲在Hadoop中的大規模數據的機制。hive數據倉庫工具能將結構化的數據文件映射為一張數據庫表,并提供SQL查詢功能,能將SQL語句轉變成MapReduce任務來執行。

風格一

這種風格大家都比較常用,從結果向源頭倒著推,直接多層嵌套,一層一層往里面寫,業務邏輯復雜的話有可能寫很多層,達到幾百行之多,目前很多公司在有數倉的支持下,基本嵌套的層數會比較少

select *
from
(
    (select *
    from a_temp
    where xxxx
    group by xxxx) as a
    left join 
    (select *
    from b_temp
    where xxxx) as b 
    on a.id=b.id
) temp
where xxxx
group by xxxx
order by xxxx

風格二

with a as(select *
        from a_temp
        where xxxx 
        group by xxxx),
     b as(select *
        from b_temp
        where xxxx)
select *
from a left join b on a.id=b.id
where xxxx 
group by xxxx
order by xxxx

這種風格是利用 with 語句,從源頭向結果正向推,可以把 with 語句理解為建立了一個臨時視圖/表一樣,后面的表引用前面的表,邏輯是正向推進

兩種風格的區別

  • 風格一:用的最多,從結果向源頭倒著推
  • 風格二:容易理解,從源頭向結果正向推

相關參考

Python 利用Pandas把數據直接導入Mysql

Python 基于ssh連接遠程Mysql數據庫

原文鏈接:https://www.jianshu.com/p/5959856ce67a

欄目分類
最近更新