返回文章列表

Snowflake 快速建立實驗資料函式庫實戰技巧

本文介紹兩種在 Snowflake 中快速建立實驗資料函式庫的方法,讓你在學習 SQL 或進行資料分析時,能更快速地上手實作。第一種方法是利用 Snowflake 內建的範例資料函式庫 TPCH_SF1 進行一鍵複製,第二種方法則示範如何從 GitHub 載入 CSV 檔案建立資料函式庫。

資料函式庫 資料分析

在資料科學領域,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 所示。