白話數(shù)據(jù)產(chǎn)品(二)——SQL入門

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

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

作為數(shù)據(jù)產(chǎn)品,一項(xiàng)基礎(chǔ)工作即是為需求方取數(shù)據(jù),一般來說簡單的取數(shù)數(shù)據(jù)產(chǎn)品是要兼顧的,復(fù)雜的取數(shù)才會(huì)升級到研發(fā)來取,畢竟研發(fā)們都很忙嘛,小事我們自己也可以搞定的。

一、SQL思路3分鐘入門

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

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

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

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

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

這里我都沒有使用具體的SQL舉例,因?yàn)檎归_來將可能會(huì)有很大的篇幅。想要進(jìn)一步深入的同學(xué),可以去查看相關(guān)的SQL教程,按照上面介紹的思路去學(xué)習(xí),就不會(huì)感到迷茫了。

2. HSQL vs SQL

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

這里舉一些例子說明:

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

相關(guān)閱讀

白話數(shù)據(jù)產(chǎn)品(一):數(shù)據(jù)倉庫

 

作者:小九,一枚互金數(shù)據(jù)產(chǎn)品

本文由 @小九 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 大家期待已久的《數(shù)據(jù)產(chǎn)品經(jīng)理實(shí)戰(zhàn)訓(xùn)練營》終于在起點(diǎn)學(xué)院(人人都是產(chǎn)品經(jīng)理旗下教育機(jī)構(gòu))上線啦!

    本課程非常適合新手?jǐn)?shù)據(jù)產(chǎn)品經(jīng)理,或者想要轉(zhuǎn)崗的產(chǎn)品經(jīng)理、數(shù)據(jù)分析師、研發(fā)、產(chǎn)品運(yùn)營等人群。

    課程會(huì)從基礎(chǔ)概念,到核心技能,再通過典型數(shù)據(jù)分析平臺(tái)的實(shí)戰(zhàn),幫助大家構(gòu)建完整的知識(shí)體系,掌握數(shù)據(jù)產(chǎn)品經(jīng)理的基本功。

    學(xué)完后你會(huì)掌握怎么建指標(biāo)體系、指標(biāo)字典,如何設(shè)計(jì)數(shù)據(jù)埋點(diǎn)、保證數(shù)據(jù)質(zhì)量,規(guī)劃大數(shù)據(jù)分析平臺(tái)等實(shí)際工作技能~

    現(xiàn)在就添加空空老師(微信id:anne012520),咨詢課程詳情并領(lǐng)取福利優(yōu)惠吧!

    來自廣東 回復(fù)
  2. 滿滿干貨物,已關(guān)注,等待更新,感謝。

    來自廣東 回復(fù)
  3. 看不懂 ??

    來自廣東 回復(fù)
  4. 實(shí)在

    回復(fù)
  5. 干貨

    回復(fù)
    1. 謝謝 ??

      來自上海 回復(fù)