從Excel到SQL:效率增倍,錯誤減半!

Excel SQL 數據庫 電腦 Salesforce 鼠標 讀芯術 2019-04-05

如果你經常用到Excel,下面這個令人沮喪的對話框可能對你來說並不陌生。


從Excel到SQL:效率增倍,錯誤減半!


也可能遇到過這種情況:編輯電子表格時運轉非常緩慢,每點擊一次鼠標電腦就會卡10秒。

出現這種情況通常是由於文件太大或工作簿中的公式過多。Excel最多可以處理100萬行數據,但當你處理大型數據集或進行繁重的分析時,例如,將公式應用於一組單元格、鏈接多個電子表格或連接到其他工作簿時,在未超出Excel處理的最大行數之前,其操作速度會大大降低。

Excel還有一個可能導致其效率低下的弱點: 結構過於靈活。這聽起來有點匪夷所思——靈活性是人們鍾愛Excel的原因之一。因為每個單元格都是一個獨立的實體,所以可以自由地添加腳註、合併單元格或繪製“刺繡圖案”。


從Excel到SQL:效率增倍,錯誤減半!



但是,如果一個單元格的操作很簡單,那麼就很難信任整個電子表格的完整性。Excel的靈活性使得在大型數據集中幾乎不可能實現一致性和準確性。不管你有多警惕,不管你在電子表格中梳理了多少次拼寫錯誤和錯誤的公式,你可能仍會有所遺漏。

不過完成這項工作通常有更好的工具。有些小竅門可以幫助你利用Excel知識來學習SQL。

從Excel到SQL:效率增倍,錯誤減半!


嗨,SQL

在Excel中使用的數據肯定來源於某處。而這個來源就是數據庫。即使你感覺數據的來源缺乏技術性(比如Google Analytics、Stripe或Salesforce),但你查詢的就是數據庫。

我們的網站1月份的訪問量是多少? 我們剛剛推出的產品的支付渠道放棄率是多少?哪些銷售代表擁有更多的銷售渠道?這些都是人類的疑問,而不是計算機語言。作為一個Excel的高級用戶,如果擁有正確的數據集,你可能會考慮如何將這些問題寫成公式。

那麼,如何直接查詢數據庫呢?在大多數情況下,人們使用SQL( Structured Query Language 結構化查詢語言)。SQL會告訴數據庫要對哪些數據進行查看和運算操作。

將一些初始運算導入SQL中,可以減少導出的數據量。若使用的數據集較小,那麼你可能不會遇到Excel的性能問題。

隨著你對SQL的操作熟練度的提高,你可以將越來越多的分析轉移到SQL中,直到Excel成為例外,而不是規則。SQL數據庫可以處理大量數據而無需擔心性能問題,並且具有保護數據完整性的有序結構。

學習一門新語言可能聽起來令人望而生畏,就像使用感覺技術性更高的工具一樣。但是作為一個Excel用戶,你對SQL的瞭解已經超出自己的預期。

從Excel到SQL:效率增倍,錯誤減半!


電子表格,滿足關係數據


數據庫是一個有序數據集合。數據庫有很多不同的類型,但是有一種數據庫可以與SQL建立連接,即關係數據庫(relation database)。

正如Excel工作簿由電子表格組成一樣,關係數據庫也由表組成,如下所示。


從Excel到SQL:效率增倍,錯誤減半!



與電子表格一樣,表也有行和列。但是在表中,單元格(或數據庫術語中的“值”)之間不能建立聯繫。若想將Ralph Abernathy的家鄉從上圖所示表格的第一行中排除,你不能直接將其刪除,而必須排除整個行或者整個“家鄉”列。

不能動態更改單元格的原因是數據庫具有嚴格的結構。作為獨立的單元,每行中的所有值綁定在一起。每個列必須有唯一的名稱,並且只能包含特定類型的數據(“Integer”、“Text”、“Date”等)。

Excel的靈活結構現在聽起來不錯,但請稍等。因為數據庫的結構非常嚴格,所以保護數據的完整性較容易。換句話說,你所得結果中出現不一致和錯誤的可能性要小得多。這意味著你的數據的可信度更高。

從Excel到SQL:效率增倍,錯誤減半!


從公式轉為查詢


在Excel中操作數據最常用的方法是使用公式。公式由一個或多個函數組成,這些函數告訴Excel如何處理單元格中的數據。例如,你可以使用SUM(A1:A5)進行數值求和,或者使用AVERAGE(A1:A5).求其平均值。

公式所對應的SQL語句是查詢。返回上表的查詢,如下所示

SELECT player_name,

hometown,

state,

weight

FROM benn.college_football_players


SELECT 和 FROM 是任何SQL查詢的兩個基本組成部分。SELECT 指定所需數據的列, FROM指示該數據列屬於哪個表。你可以通過在SELECT 後添加星號(*)來表示所有的列,如下所示。

SELECT *

FROM benn.college_football_players


該查詢將會顯示 benn.college_football_players 表中的所有列,這樣你就可以對整個數據集有所瞭解。一旦知道需要什麼,你就可以快速地刪除列以減小數據集規模。

與公式一樣,查詢由指定數據操作的函數組成。查詢還可以包含子句、運算符、表達式和其他一些組件,但是我們不打算在這裡細講。你需要知道的是,你可以使用SQL操作數據,且操作方式與excel的幾乎完全一樣。

以 IF 函數為例。使用 IF 創建條件語句,根據定義的規則過濾數據或添加新數據。當你把一個 IF 函數應用到一個單元格上時,所得結果如下:

=IF(logical_test, value_if_true, [value_if_false])


也可表示為IF <some condition is met> THEN <display this value> OTHERWISE <display a different value>. 其中,OTHERWISE部分(顯示為)是可選的。相當於 IF 的SQL語句是 CASE 。兩者的語法非常相似。

CASE WHEN <condition 1 is met> THEN <display value 1>

ELSE <display a different value>

END


CASE語句比IF 語句更容易閱讀,因為SQL查詢有多行,是具有多個條件的IF 語句的理想化的結構。例如,若想在基於Excel中的現有數據中添加兩個類別,則必須將一個IF語句嵌入另一個IF語句中。當添加的條件很多時,事情很快就會變得很糟糕。但是在SQL中,你可以添加一個新條件作為另一行。

在SQL中,讓我們用上面的大學足球隊的數據來添加多個條件。我們要添加一列,把足球運動員分成四組。其查詢如下:

SELECT player_name,

weight,

CASE WHEN weight > 250 THEN 'over 250'

WHEN weight > 200 THEN '201-250'

WHEN weight > 175 THEN '176-200'

ELSE '175 or under' END AS weight_group

FROM benn.college_football_players


所得表格如下:


從Excel到SQL:效率增倍,錯誤減半!



也沒有很難,對不對?不過這對於IF語句將是一場噩夢。

你可能會想,那麼圖表呢?哪些讓我的報告稱得上是報告的圖形呢? 一種選擇是在SQL中操作數據、導出數據並在Excel中構建圖表。

但是,如果你想跳過導出步驟,一些SQL程序(比如Mode)允許你在查詢結果之上構建圖表。這些圖表是直接綁定到數據庫的,因此每當重新運行查詢時,結果和可視化都會自動刷新。

從Excel到SQL:效率增倍,錯誤減半!


學習SQL的下一步


當你對SQL有所瞭解時,知道什麼是學習重點以及如何處理公司的數據是很有幫助的。

選擇針對數據分析的教程


SQL的資源有很多,但不是所有的SQL資源都專注於數據分析。

工程師和數據庫管理員使用SQL在數據庫中創建、更新和刪除表。他們可以上傳一個全新的表,也可以從數據庫中永久刪除一個表。這些任務與你將如何使用SQL有很大的不同(至少在你對數據感興趣並因此轉為從事數據分析工作之前)。

不要陷入針對數據庫管理的SQL教程中。專注於查詢相關的教程。下面是一些SQL教程:

· 數據檢索

· 數據過濾及一些簡單的運算

· 同時使用多個過濾器

· 對結果進行排序

· 數據聚合

· 計算列中的唯一值

· 條件邏輯

· 數據集連接

如果你發現自己在教程中討論以下內容:

· CREATE TABLE

· DROP TABLE

· CREATE DATABASE

· DROP DATABASE

那你的關注點已經出錯了。


利用公司的數據進行練習

如果你辦公時需要進行數據分析,那麼沒有什麼比利用公司的數據學習SQL更合適了。你可以探索公司的數據結構,同時學習技術概念。你的任何選擇都將立即適用於你的工作。

要做到這一點,你需要了解公司的數據是如何構成的:產品和營銷數據存儲在哪裡? 如果你想查看上個月出現問題的帳戶,應該查詢哪個表?

大多數企業都有一個分析團隊,每天處理公司的數據。這些人將能夠回答你的問題或為你指出有用的文檔。這裡有一種互惠關係: 如果你自己查詢數據,分析團隊積壓的數據請求就會減少。

相關推薦

推薦中...