白話數據產品(二)——SQL入門

6 評論 21362 瀏覽 161 收藏 6 分鐘

SQL算是大數據中最常用的語言,對于數據產品來說具備基礎的SQL技能是必不可少的。上一篇介紹了數據一般怎樣抽取,然后怎么存儲在數據倉庫中,這一篇介紹怎么把存儲好的數據提取出來。

作為數據產品,一項基礎工作即是為需求方取數據,一般來說簡單的取數數據產品是要兼顧的,復雜的取數才會升級到研發來取,畢竟研發們都很忙嘛,小事我們自己也可以搞定的。

一、SQL思路3分鐘入門

SQL可以實現的功能很多,建表、刪表、插入數據、查詢數據…這里主要介紹查詢數據的SQL一般寫法,SQL語言的主要邏輯也是在查詢語句這一塊。

傳統MySQL類數據庫或大數據中,用到的Hive數據庫是按行索引的,可以理解為一條一條的記錄,而且大數據用到的HSQL其實跟傳統SQL語句基本是一致的。

我們常見的對數據的處理主要是這么幾種:根據條件篩選數據,將記錄字段橫向合并,將記錄縱向合并,而這對應的就是SQL語句中的查詢/子查詢、各種JOIN、UNION ALL。那種看似很長很復雜的SQL代碼,其實也就是這三種操作的結合體。

如下圖所示:可以理解為數據庫查詢就是將多份數據查出來,互相關聯合并,生成一張新的表單,然后可以在新的表單的基礎上進行查詢或者再跟其他數據關聯合并。

  • 子查詢:通過條件從一張或多張表中選取出數據,你可以理解多張表的查詢,其實就是像圖中所示加了一些join和union all的連接操作。如果只是從一張表中查詢,那么就只用關心這張表的記錄結構,是否有重復記錄等。
  • JOIN:相當于是對兩份數據進行取并集、交集或其他集合方式的操作,是對兩張表的字段進行了橫向拼接,需要指定拼接的連接關系是用的哪個字段。比如:同一個用戶,在一張表里記錄了他的年齡,在另一張表里記錄了他的性別,那么通過join操作就可以把這兩個字段放到同一張新的表中,然后可以在這張新的表的基礎上再進行其他操作。
  • UNION ALL:相當于是把記錄縱向疊加,比如:因為數據量比較大,業務庫進行了拆表操作,將1-6月份數據放在表A,將7-12月份數據放在表B。因為是同樣的記錄,字段都是一致的,通過union all就可以做成一張新的表,同時包含A和B的數據在里面。

這里我都沒有使用具體的SQL舉例,因為展開來將可能會有很大的篇幅。想要進一步深入的同學,可以去查看相關的SQL教程,按照上面介紹的思路去學習,就不會感到迷茫了。

2. HSQL vs SQL

數據工作中,既要用SQL語句去業務庫里查詢對比數據,又要會使用HSQL在自己的平臺(一般是Hue中的Hive)中查詢。兩種語言除了個別函數不通用,基本是一致的。

這里舉一些例子說明:

  • Hive中不支持not in操作,一般使用not exists代替,或者left outer join。
  • Hive的切片機制(上一篇有解釋)導致取數需要加上條件使用的是哪天的數據。
  • Hive的分層機制(同樣上一篇有解釋)導致在不同層級進行取數,邏輯是大不相同的。ODS層同一條id記錄可能有大量不同時間更新的“重復數據”,要注意進行按一定順序的去重處理。
  • Hive中某些層級的數據中對時間的存儲可能為unix timestamp格式,表現為一長串數字而不是常見的時間格式,需要在使用中進行轉化。
  • Hive中可以使用多種數據計算框架,比如:MapReduce、Spark等,在不同情況下選用可以獲得更好的效率。

相關閱讀

白話數據產品(一):數據倉庫

 

作者:小九,一枚互金數據產品

本文由 @小九 原創發布于人人都是產品經理。未經許可,禁止轉載

題圖來自Unsplash,基于CC0協議

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 大家期待已久的《數據產品經理實戰訓練營》終于在起點學院(人人都是產品經理旗下教育機構)上線啦!

    本課程非常適合新手數據產品經理,或者想要轉崗的產品經理、數據分析師、研發、產品運營等人群。

    課程會從基礎概念,到核心技能,再通過典型數據分析平臺的實戰,幫助大家構建完整的知識體系,掌握數據產品經理的基本功。

    學完后你會掌握怎么建指標體系、指標字典,如何設計數據埋點、保證數據質量,規劃大數據分析平臺等實際工作技能~

    現在就添加空空老師(微信id:anne012520),咨詢課程詳情并領取福利優惠吧!

    來自廣東 回復
  2. 滿滿干貨物,已關注,等待更新,感謝。

    來自廣東 回復
  3. 看不懂 ??

    來自廣東 回復
  4. 實在

    回復
  5. 干貨

    回復
    1. 謝謝 ??

      來自上海 回復