網站首頁 編程語言 正文
背景
在平時業務運營分析中經常會提取數據,也就是大家俗稱的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
相關推薦
- 2022-09-06 Golang實現http重定向https_Golang
- 2024-07-14 springboot通過CompletableFuture開啟多線程執行任務
- 2022-07-25 Android開發之Fragment懶加載的幾種方式及性能對比_Android
- 2022-11-20 Android類加載流程分析_Android
- 2023-01-17 在1個Matlab?m文件中定義多個函數直接運行的操作方法_C 語言
- 2022-02-17 判斷一個字符串中是否包含另一個字符串
- 2022-07-26 瀏覽器解析機制和XSS向量編碼
- 2022-04-19 C語言雙指針算法朋友過情人節我過算法_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支