在資料科學領域,Snowflake 是一個強大的雲端資料倉儲平台,提供高效能的資料儲存和分析能力。但是,要開始使用 Snowflake 進行 SQL 學習或資料分析,首先需要一個實驗資料函式庫。本文將介紹兩種在 Snowflake 中快速建立實驗資料函式庫的實戰技巧,讓你省去繁瑣的設定,直接開始資料探索之旅。第一種方法,如果你的 Snowflake 環境允許,可以直接複製內建的 TPCH_SF1 範例資料函式庫。透過簡單的 SQL 指令,就能快速建立所需的資料表,並複製範例資料。第二種方法,則適用於無法使用內建範例資料函式庫的情況。我們可以從 GitHub 下載 CSV 檔案,並利用 Snowflake 的資料載入功能,將資料匯入到新建的資料表中。兩種方法各有優劣,可以根據自身環境和需求選擇適合的方式。

在 Snowflake 中快速建立你的專屬實驗資料函式庫:玄貓的兩種實戰技巧

在學習 SQL 或進行資料分析時,擁有一個方便操作的範例資料函式庫至關重要。今天,玄貓將分享兩種在 Snowflake 中建立範例資料函式庫的實用方法,讓你擺脫繁瑣的設定,快速開始你的資料探索之旅。

方法一:一鍵複製 Snowflake 內建範例資料函式庫

如果你的 Snowflake 環境中已存在 SNOWFLAKE_SAMPLE_DATA 資料函式庫,並且其中包含 TPCH_SF1 資料函式庫,那麼恭喜你,可以使用這個最簡單的方法快速建立範例資料函式庫。

  1. 確認範例資料函式庫可用性

    首先,透過 Snowflake 的 Data > Databases 選單,確認 TPCH_SF1 資料函式庫是否存在於 SNOWFLAKE_SAMPLE_DATA 之下。

  2. 建立並填充表格

    在開始建立表格之前,請務必指定你要使用的資料函式庫和 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” 功能一次執行所有陳述式。

  3. 遇到問題?別擔心!

    如果在執行過程中遇到任何問題,你可以使用以下指令重新建立資料函式庫,並清除所有現有表格:

    create or replace database learning_sql;
    

方法二:從 GitHub 載入 CSV 檔案建立資料函式庫

如果 TPCH_SF1 範例資料函式庫無法使用,別擔心,玄貓還有第二個方法!你可以從 GitHub 載入 CSV 檔案,手動建立範例資料函式庫。

  1. 建立資料函式庫表格

    首先,你需要建立八個表格。你可以從 GitHub 載入 Learning_Snowflake_SQL_Schema.sql 檔案,並執行其中的 create table 陳述式。

  2. 載入 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 資料表:SELECTFROM 子句

讓玄貓來看看範例資料函式庫中最小的資料表 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 顯示了這些資料表的圖表,包含所有欄位和資料表之間的關係。

探索查詢子句:SELECTFROMWHERE

查詢由多個元件(或稱 “子句”)組成。SELECTFROM 子句在上一節中已經介紹過,但 Snowflake 查詢可以新增八個不同的子句,如表 1-1 所示。