在資料科學領域,Snowflake 是一個強大的雲端資料倉儲平台,提供高效能的資料儲存和分析能力。但是,要開始使用 Snowflake 進行 SQL 學習或資料分析,首先需要一個實驗資料函式庫。本文將介紹兩種在 Snowflake 中快速建立實驗資料函式庫的實戰技巧,讓你省去繁瑣的設定,直接開始資料探索之旅。第一種方法,如果你的 Snowflake 環境允許,可以直接複製內建的 TPCH_SF1 範例資料函式庫。透過簡單的 SQL 指令,就能快速建立所需的資料表,並複製範例資料。第二種方法,則適用於無法使用內建範例資料函式庫的情況。我們可以從 GitHub 下載 CSV 檔案,並利用 Snowflake 的資料載入功能,將資料匯入到新建的資料表中。兩種方法各有優劣,可以根據自身環境和需求選擇適合的方式。
在 Snowflake 中快速建立你的專屬實驗資料函式庫:玄貓的兩種實戰技巧
在學習 SQL 或進行資料分析時,擁有一個方便操作的範例資料函式庫至關重要。今天,玄貓將分享兩種在 Snowflake 中建立範例資料函式庫的實用方法,讓你擺脫繁瑣的設定,快速開始你的資料探索之旅。
方法一:一鍵複製 Snowflake 內建範例資料函式庫
如果你的 Snowflake 環境中已存在 SNOWFLAKE_SAMPLE_DATA 資料函式庫,並且其中包含 TPCH_SF1 資料函式庫,那麼恭喜你,可以使用這個最簡單的方法快速建立範例資料函式庫。
-
確認範例資料函式庫可用性
首先,透過 Snowflake 的 Data > Databases 選單,確認
TPCH_SF1資料函式庫是否存在於SNOWFLAKE_SAMPLE_DATA之下。 -
建立並填充表格
在開始建立表格之前,請務必指定你要使用的資料函式庫和 Schema。你可以使用
use schema指令來設定,例如:use schema learning_sql.public;接下來,執行以下 SQL 指令,將
TPCH_SF1中的資料複製到你自己的資料函式庫中:create table region as select * from snowflake_sample_data.tpch_sf1.region; create table nation as select * from snowflake_sample_data.tpch_sf1.nation; create table part as select * from snowflake_sample_data.tpch_sf1.part where mod(p_partkey,50) = 8; create table partsupp as select * from snowflake_sample_data.tpch_sf1.partsupp where mod(ps_partkey,50) = 8; create table supplier as with sp as (select distinct ps_suppkey from partsupp) select s.* from snowflake_sample_data.tpch_sf1.supplier s inner join sp on s.s_suppkey = sp.ps_suppkey; create table lineitem as select l.* from snowflake_sample_data.tpch_sf1.lineitem l inner join part p on p.p_partkey = l.l_partkey; create table orders as with li as (select distinct l_orderkey from lineitem) select o.* from snowflake_sample_data.tpch_sf1.orders o inner join li on o.o_orderkey = li.l_orderkey; create table customer as with o as (select distinct o_custkey from orders) select c.* from snowflake_sample_data.tpch_sf1.customer c inner join o on c.c_custkey = o.o_custkey;玄貓小提示: 你可以一次執行一個 SQL 陳述式,也可以使用 Snowflake 的 “Run All” 功能一次執行所有陳述式。
-
遇到問題?別擔心!
如果在執行過程中遇到任何問題,你可以使用以下指令重新建立資料函式庫,並清除所有現有表格:
create or replace database learning_sql;
方法二:從 GitHub 載入 CSV 檔案建立資料函式庫
如果 TPCH_SF1 範例資料函式庫無法使用,別擔心,玄貓還有第二個方法!你可以從 GitHub 載入 CSV 檔案,手動建立範例資料函式庫。
-
建立資料函式庫表格
首先,你需要建立八個表格。你可以從 GitHub 載入
Learning_Snowflake_SQL_Schema.sql檔案,並執行其中的create table陳述式。 -
載入 CSV 檔案
表格建立完成後,你需要從 GitHub 載入 CSV 檔案,並將資料匯入到對應的表格中。每個表格都有一個對應的 CSV 檔案,例如,
Customer表格對應customer.csv.gz檔案。Table name GitHub file Customer customer.csv.gz Lineitem lineitem.csv.gz Nation nation.csv.gz Orders orders.csv.gz Part part.csv.gz Partsupp partsupp.csv.gz Region region.csv.gz Supplier supplier.csv.gz 玄貓經驗分享: 在載入資料時,請務必選擇 “Delimited Files (CSV or TSV)” 檔案格式,並保持其他選項為預設值。
查詢入門:掌握 Snowflake SQL 的起手式
讓我們開始動手撰寫查詢語法,SELECT 語法在 SQL 中扮演著查詢資料的重要角色。
Snowflake SQL 查詢基礎
如果您已經依照前言的步驟建立 Snowflake 帳號和範例資料函式庫,現在可以使用 Snowsight 來輸入查詢語法。首先,點選畫面左側的 “Worksheets” 按鈕,然後點選右上角的 “+” 按鈕來建立新的 Worksheet。新的 Worksheet 會出現在左側窗格,名稱會使用目前的日期和時間,您可以將其重新命名為 Learning_Snowflake_SQL,以便用於本章中的範例。在新的 Worksheet 中執行任何查詢之前,請將 Schema 設定為 Learning_SQL 資料函式庫中的 Public Schema:
USE SCHEMA learning_sql.public;
將此命令輸入到您的 Worksheet 中後,點選螢幕右上角的箭頭來執行命令,每次登入 Snowsight 時,您都需要執行此 USE SCHEMA 語法,才能針對範例資料函式庫執行查詢。
Snowflake 網頁介面 Snowsight 與 SnowSQL CLI 的比較
本章中的大多數範例都會使用 Snowflake 的 CLI(稱為 SnowSQL)而不是 Snowsight 網頁介面。這樣一來,範例中的 SQL 語法可以直接從本章複製(假設您使用的是線上版本),並且可以減少不必要的混亂。玄貓建議您使用 Snowsight,因為它是一個強大的工具,可以從任何裝置執行。
如果您想使用 SnowSQL,可以按照以下安裝和使用說明進行操作。使用 SnowSQL 時,請務必在 SQL 語法的結尾加上分號,然後按 Enter 鍵來執行語法。此外,除了使用 USE SCHEMA 命令設定目前的 Schema 之外,玄貓還使用以下語法在 SnowSQL 中設定提示字元:
!set prompt_format=[schema]>;
這就是為什麼玄貓的所有範例都會顯示提示字元 PUBLIC>,但如果您喜歡,也可以使用預設的提示字元格式。
選擇適合您的工具:Snowsight 還是 SnowSQL?
Snowflake 提供了兩種主要的介面來執行 SQL 查詢:Snowsight 和 SnowSQL。Snowsight 是一個根據網頁的圖形化介面,易於使用且功能豐富,適合初學者和需要快速視覺化資料的使用者。另一方面,SnowSQL 是一個命令列工具,更適合進階使用者和需要自動化 SQL 語法執行的情境。
Snowsight 的優點:
- 使用者友善: 圖形化介面直觀易懂,方便使用者快速上手。
- 視覺化功能: 提供豐富的圖表和儀錶板,方便使用者視覺化資料。
- 跨平台: 可在任何支援網頁瀏覽器的裝置上使用。
SnowSQL 的優點:
- 自動化: 可透過指令碼自動執行 SQL 語法,提高工作效率。
- 進階功能: 支援更多進階功能,例如變數和引數化查詢。
- 效能: 在某些情況下,SnowSQL 的執行效能可能優於 Snowsight。
玄貓建議初學者先從 Snowsight 開始,熟悉 SQL 語法和 Snowflake 的基本操作。當您需要自動化 SQL 語法執行或使用進階功能時,可以考慮使用 SnowSQL。
內容解密
- USE SCHEMA: 這個 SQL 語法用於設定目前的工作 Schema。Schema 是一個資料函式庫的邏輯子集,用於組織和管理資料表、視窗和其他資料函式庫物件。
- Snowsight: Snowflake 提供的網頁介面,用於執行 SQL 查詢、視覺化資料和管理 Snowflake 帳戶。
- SnowSQL: Snowflake 提供的命令列工具,用於執行 SQL 查詢和管理 Snowflake 帳戶。
- CLI: Command Line Interface,命令列介面。
### Snowflake SQL:從基礎到進階,玄貓帶你輕鬆入門
在資料分析的世界裡,SQL 是不可或缺的工具。今天,玄貓將帶領大家探索 Snowflake SQL 的基礎知識,讓你快速上手,駕馭資料的洪流。
#### 取得今日日期:一個簡單的開始
讓我們從一個簡單的查詢開始,取得今天的日期:
```sql
SELECT CURRENT_DATE;
內容解密:
CURRENT_DATE()是一個內建函式,用於取得當前日期。- 預設情況下,日期格式為 YYYY-MM-DD(四位數年份、兩位數月份、兩位數日期)。
SELECT陳述式會傳回一個結果集,它由一或多個行和列組成。
結果集就像一張資料表,包含多行多列的資料。SELECT 陳述式可以傳回整張資料表的內容。
探索 Region 資料表:SELECT 和 FROM 子句
讓玄貓來看看範例資料函式庫中最小的資料表 Region,它包含以下資料:
SELECT *
FROM region;
內容解密:
SELECT *是 “傳回所有欄位” 的簡寫。FROM子句用於指定要從哪個資料表檢索資料。
這個查詢包含了 SELECT 子句和 FROM 子句。FROM 子句告訴 Snowflake 從 region 資料表提取資料。
結果集註意事項:
Region資料表有 5 行和 3 列。- 第三列的註解是隨機產生的。這適用於範例資料函式庫中的所有描述性欄位。
- SnowSQL 會自動格式化結果集,包含欄位名稱,並使用
+、-和|字元建立欄位和列的邊框。
如果使用 Snowsight,結果集會看起來像圖 1-2。
使用 DESCRIBE 陳述式檢視資料表結構
如果想要檢視資料表中有哪些欄位,可以使用 Snowflake 的 DESCRIBE 陳述式。以下是 Region 資料表的範例:
DESCRIBE TABLE region;
內容解密:
DESCRIBE TABLE陳述式用於顯示資料表的結構資訊。- 結果集包含欄位名稱、資料型別、是否允許 NULL 值等資訊。
Region 資料表有一個名為 r_regionkey 的數值欄位,用於儲存每行的唯一數值,還有兩個字元欄位(VARCHAR 代表可變字元),用於儲存區域的名稱和相關註解。
SHOW TABLES 指令:尋找資料函式庫中的所有資料表
要檢視資料函式庫中所有可用的資料表,可以使用 SHOW TABLES 指令(使用 terse 選項限制欄位數量):
SHOW TERSE TABLES IN PUBLIC;
內容解密:
SHOW TABLES陳述式用於列出資料函式庫中的所有資料表。TERSE選項用於簡化輸出,只顯示部分欄位。IN PUBLIC指定要查詢的資料函式庫。
注意事項:
SHOW TABLES的輸出只會包含你擁有檢視許可權的資料表。- 本章中的大部分範例都會使用
SHOW TABLES指令傳回的八個資料表。附錄 A 顯示了這些資料表的圖表,包含所有欄位和資料表之間的關係。
探索查詢子句:SELECT、FROM、WHERE 等
查詢由多個元件(或稱 “子句”)組成。SELECT 和 FROM 子句在上一節中已經介紹過,但 Snowflake 查詢可以新增八個不同的子句,如表 1-1 所示。