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

小九
6 評論 21514 瀏覽 162 收藏 6 分鐘
🔗 产品经理专业技能指的是:需求分析、数据分析、竞品分析、商业分析、行业分析、产品设计、版本管理、用户调研等。

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

作為數(shù)據(jù)產(chǎn)品,一項(xiàng)基礎(chǔ)工作即是為需求方取數(shù)據(jù),一般來說簡單的取數(shù)數(shù)據(jù)產(chǎn)品是要兼顧的,復(fù)雜的取數(shù)才會升級到研發(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)檎归_來將可能會有很大的篇幅。想要進(jìn)一步深入的同學(xué),可以去查看相關(guān)的SQL教程,按照上面介紹的思路去學(xué)習(xí),就不會感到迷茫了。

2. HSQL vs SQL

數(shù)據(jù)工作中,既要用SQL語句去業(yè)務(wù)庫里查詢對比數(shù)據(jù),又要會使用HSQL在自己的平臺(一般是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í)間的存儲可能為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
"="" class="meta">01-0316834 瀏覽
"="" class="meta">
"="" class="meta"> "="" src="https://image.woshipm.com/wp-files/2023/01/wxSZmm3YsnOj1Gb9IqnC.png!/both/120x80" alt="淺談?dòng)脩粜袨榉治鲋傲舸妗?>
="">
"="" src="https://image.woshipm.com/wp-files/2023/01/wxSZmm3YsnOj1Gb9IqnC.png!/both/120x80" alt="淺談?dòng)脩粜袨榉治鲋傲舸妗?>