1. 使用 Google Cloud Storage 和 BigQuery,從 Snowflake 建構反向 ETL 管道至 Spanner
簡介
在本程式碼研究室中,您將從 Snowflake 建構 Reverse ETL 管道至 Spanner。傳統上,ETL (擷取、轉換、載入) 管道會將資料從作業資料庫移至 Snowflake 等資料倉儲,以供分析。反向 ETL 管道則相反,會將經過處理的精選資料從資料倉儲移回營運系統,用於支援應用程式、提供使用者功能,或用於即時決策。
目標是將匯總資料集從 Snowflake Iceberg 資料表移至 Spanner。Spanner 是全球分散式關聯資料庫,非常適合高可用性應用程式。
為此,我們使用 Google Cloud Storage (GCS) 和 BigQuery 做為中繼步驟。以下是資料流程的細目,以及此架構背後的理由:
- 以 Iceberg 格式將 Snowflake 資料匯出至 Google Cloud Storage (GCS):
- 第一步是以開放且定義完善的格式,從 Snowflake 匯出資料。資料表會以 Apache Iceberg 格式匯出。這個程序會將基礎資料寫入一組 Parquet 檔案,並將資料表的中繼資料 (結構定義、分區、檔案位置) 寫入 JSON 和 Avro 檔案。在 GCS 中暫存這個完整資料表結構,可讓資料可攜,且任何瞭解 Iceberg 格式的系統都能存取。
- 將 GCS 中的 Iceberg 資料表轉換為 BigQuery BigLake 外部資料表:
- 您不必直接將資料從 GCS 載入 Spanner,而是使用 BigQuery 做為強大的中介服務。您將在 BigQuery 中建立 BigLake 外部資料表,直接指向 GCS 中的 Iceberg 中繼資料檔案。這種方法有幾個優點:
- 無資料重複:BigQuery 會從中繼資料讀取資料表結構,並直接查詢 Parquet 資料檔案,不必擷取這些檔案,因此可大幅節省時間和儲存空間費用。
- 聯合查詢:可讓您對 GCS 資料執行複雜的 SQL 查詢,就像查詢原生 BigQuery 資料表一樣。
- BigQuery 至 Spanner:
- 最後一個步驟是將資料從 BigQuery 移至 Spanner。您將使用 BigQuery 的強大功能 (稱為「
EXPORT DATA查詢」) 完成這項工作,也就是「反向 ETL」步驟。 - 運作準備:Spanner 專為交易工作負載設計,可為應用程式提供同步一致性和高可用性。將資料移至 Spanner 後,需要低延遲點查的使用者導向應用程式、API 和其他作業系統,就能存取這些資料。
- 可擴充性:這個模式可充分運用 BigQuery 的分析能力處理大型資料集,然後透過 Spanner 的全球可擴充基礎架構有效提供結果。
服務和術語
- Snowflake - 雲端資料平台,提供資料倉儲即服務。
- Spanner - 全代管的全球分散式關聯資料庫。
- Google Cloud Storage:Google Cloud 的 Blob 儲存空間服務。
- BigQuery - 全代管的無伺服器資料倉儲,可用於資料分析。
- Iceberg:Apache 定義的開放式資料表格式,可針對常見的開放原始碼資料檔案格式提供抽象化功能。
- Parquet:Apache 的開放原始碼欄位式二進位資料檔案格式。
課程內容
- 如何將資料載入 Snowflake
- 如何建立 GCS 值區
- 如何以 Iceberg 格式將 Snowflake 資料表匯出至 GCS
- 如何設定 Spanner 執行個體
- 如何將 BigQuery 中的 BigLake 外部資料表載入 Spanner
2. 設定、需求條件和限制
必要條件
- Snowflake 帳戶
- 如要從 BigQuery 匯出至 Spanner,必須使用 Google Cloud 帳戶,並具備 Enterprise 級以上的預訂。
- 透過網路瀏覽器存取 Google Cloud 控制台
- 用於執行 Google Cloud CLI 指令的終端機
- 如果 Google Cloud 機構已啟用
iam.allowedPolicyMemberDomains政策,管理員可能需要授予例外狀況,允許來自外部網域的服務帳戶。我們會在後續步驟中說明相關內容 (如適用)。
限制
請務必留意這個管道可能出現的某些限制和資料類型不相容問題。
從 Snowflake 遷移至 Iceberg
Snowflake 和 Iceberg 的資料欄資料類型不同。如要瞭解如何在這兩種格式之間轉換,請參閱 Snowflake 說明文件。
從 Iceberg 遷移至 BigQuery
使用 BigQuery 查詢 Iceberg 資料表時,會有一些限制。如需完整清單,請參閱 BigQuery 說明文件。請注意,目前不支援 BIGNUMERIC、INTERVAL、JSON、RANGE 或 GEOGRAPHY 等型別。
BigQuery 至 Spanner
從 BigQuery 到 Spanner 的 EXPORT DATA 指令不支援所有 BigQuery 資料類型。匯出下列類型的資料表時會發生錯誤:
STRUCTGEOGRAPHYDATETIMERANGETIME
此外,如果 BigQuery 專案使用 GoogleSQL 方言,下列數值型別也不支援匯出至 Spanner:
BIGNUMERIC
如需完整且最新的限制清單,請參閱官方文件:匯出至 Spanner 的限制。
Snowflake
在本程式碼研究室中,您可以使用現有的 Snowflake 帳戶,或設定免費試用帳戶。
Google Cloud Platform IAM 權限
Google 帳戶需要下列權限,才能執行本程式碼研究室中的所有步驟。
服務帳戶 | ||
| 允許建立服務帳戶。 | |
Spanner | ||
| 可建立新的 Spanner 執行個體。 | |
| 可執行 DDL 陳述式來建立 | |
| 可執行 DDL 陳述式,在資料庫中建立資料表。 | |
Google Cloud Storage | ||
| 可建立新的 GCS bucket,用來儲存匯出的 Parquet 檔案。 | |
| 允許將匯出的 Parquet 檔案寫入 GCS 值區。 | |
| 允許 BigQuery 從 GCS 儲存空間讀取 Parquet 檔案。 | |
| 允許 BigQuery 列出 GCS bucket 中的 Parquet 檔案。 | |
Dataflow | ||
| 允許從 Dataflow 認領工作項目。 | |
| 允許 Dataflow 工作站將訊息傳回 Dataflow 服務。 | |
| 允許 Dataflow 工作站將記錄項目寫入 Google Cloud Logging。 | |
為方便起見,您可以使用具備這些權限的預先定義角色。
|
|
|
|
|
|
|
|
設定可重複使用的屬性
本實驗室會重複使用幾個值。為簡化這項作業,我們會將這些值設為殼層變數,以供日後使用。
- GCP_REGION - GCP 資源所在的特定地區。如要查看區域清單,請按這裡。
- GCP_PROJECT - 要使用的 GCP 專案 ID。
- GCP_BUCKET_NAME:要建立的 GCS 值區名稱,也是儲存資料檔案的位置。
export GCP_REGION = <GCP REGION HERE>
export GCP_PROJECT= <GCP PROJECT HERE>
export GCS_BUCKET_NAME = <GCS BUCKET NAME HERE>
export SPANNER_INSTANCE = <SPANNER INSTANCE ID HERE>
export SPANNER_DB = <SPANNER DATABASE ID HERE>
Google Cloud 專案
專案是 Google Cloud 的基本組織單位。如果管理員已提供可用的憑證,則可略過這個步驟。
您可以使用 CLI 建立專案,如下所示:
gcloud projects create $GCP_PROJECT
gcloud config set project $GCP_PROJECT
如要進一步瞭解如何建立及管理專案,請參閱這篇文章。
設定 Spanner
如要開始使用 Spanner,您需要佈建執行個體和資料庫。如要瞭解如何設定及建立 Spanner 執行個體,請參閱這篇文章。
建立執行個體
gcloud spanner instances create $SPANNER_INSTANCE \
--config=regional-$GCP_REGION \
--description="Codelabs Snowflake RETL" \
--processing-units=100 \
--edition=ENTERPRISE
建立資料庫
gcloud spanner databases create $SPANNER_DB \
--instance=$SPANNER_INSTANCE
3. 建立 Google Cloud Storage bucket
Google Cloud Storage (GCS) 會用於儲存 Snowflake 產生的 Parquet 資料檔案和 Iceberg 中繼資料。如要這麼做,請先建立新 bucket 做為檔案目的地。在本機電腦的「終端機」視窗中,按照下列步驟操作。
建立 bucket
使用下列指令在特定區域 (例如 us-central1) 建立 Storage 值區。
gcloud storage buckets create gs://$GCS_BUCKET_NAME --location=$GCP_REGION
確認已建立 bucket
該指令成功執行後,請列出所有 bucket,藉此檢查結果。新 bucket 應會顯示在結果清單中。值區參照通常會在值區名稱前面加上 gs:// 前置字元。
gcloud storage ls | grep gs://$GCS_BUCKET_NAME
測試寫入權限
這個步驟可確保本機環境已正確通過驗證,並具備將檔案寫入新建立值區的必要權限。
echo "Hello, GCS" | gcloud storage cp - gs://$GCS_BUCKET_NAME/hello.txt
驗證上傳的檔案
列出值區中的物件。系統應會顯示剛上傳檔案的完整路徑。
gcloud storage ls gs://$GCS_BUCKET_NAME
您應該會看到以下的輸出內容:
gs://$GCS_BUCKET_NAME/hello.txt
如要查看 bucket 中物件的內容,可以使用 gcloud storage cat。
gcloud storage cat gs://$GCS_BUCKET_NAME/hello.txt
檔案內容應會顯示:
Hello, GCS
清除測試檔案
Cloud Storage bucket 現在已設定完成。現在可以刪除臨時測試檔案。
gcloud storage rm gs://$GCS_BUCKET_NAME/hello.txt
輸出內容應會確認刪除:
Removing gs://$GCS_BUCKET_NAME/hello.txt... / [1 objects] Operation completed over 1 objects.
4. 從 Snowflake 匯出至 GCS
在本實驗室中,您將使用 TPC-H 資料集,這是決策支援系統的業界標準基準。這個結構定義會模擬真實的商業環境,包含顧客、訂單、供應商和零件,非常適合用來展示真實的分析和資料移動情境。所有 Snowflake 帳戶預設都會提供這個資料集。
您將建立新的匯總資料表,而不是使用原始的標準化 TPC-H 資料表。這個新資料表會彙整 orders、customer 和 nation 資料表中的資料,產生反正規化的全國銷售總額摘要檢視畫面。預先彙整資料是分析作業的常見做法,因為這樣可為特定用途準備資料,在本情境中,則是供作業應用程式使用。
允許 Snowflake 存取 Google Cloud Storage
如要允許 Snowflake 將資料寫入 GCS bucket,必須建立「外部磁碟區」和必要的「權限」。
- 外部磁碟區是 Snowflake 物件,可提供 GCS 值區中特定位置的安全連結。它本身不會儲存資料,而是保留 Snowflake 存取雲端儲存空間所需的設定。
- 為確保安全,雲端儲存空間值區預設為私密。建立外部磁碟區時,Snowflake 會產生專用的服務帳戶。這個服務帳戶必須具備讀取及寫入 bucket 的權限。
建立資料庫
- 在左側選單的「Horizon Catalog」下方,將游標懸停在「Catalog」上,然後點選「Database Explorer」。
- 前往「資料庫」頁面後,按一下右上方的「+ 資料庫」按鈕。
- 將新資料庫命名為
codelabs_retl_db
建立工作表
如要對資料庫執行 SQL 指令,您需要使用工作表。
如要建立工作表,請按照下列步驟操作:
- 在左側選單的「處理資料」下方,將游標懸停在「專案」上,然後點選「工作區」。
- 在「我的工作區」側邊列下方,按一下「+ 新增」按鈕,然後選取「SQL 檔案」。
建立外部磁碟區
在 Snowflake 工作表執行下列指令,建立磁碟區。
CREATE EXTERNAL VOLUME codelabs_retl_ext_vol
STORAGE_LOCATIONS =
(
(
NAME = 'codelabs_retl_ext_vol'
STORAGE_PROVIDER = 'GCS'
STORAGE_BASE_URL = 'gcs://<Your bucket name>/snowflake_extvol'
)
);
取得 Snowflake 服務帳戶
DESC (describe) 新建立的外部磁碟區,取得 Snowflake 為該磁碟區產生的專屬服務帳戶。
DESC EXTERNAL VOLUME codelabs_retl_ext_vol;
- 在結果窗格中,尋找 json 屬性,找出包含以
"NAME":"codelabs_retl_ext_vol"開頭的 JSON 字串的property_value項目 - 在 JSON 物件中找出
STORAGE_GCP_SERVICE_ACCOUNT屬性,並複製其值 (看起來會像是電子郵件地址)。這是需要存取 GCS bucket 的服務帳戶 ID。 - 將這個服務帳戶儲存至殼層執行個體中的環境變數,以供後續重複使用
export GCP_SERVICE_ACCOUNT=<Your service account>
將 GCS 權限授予 Snowflake
現在,必須授予 Snowflake 服務帳戶寫入 GCS bucket 的權限。
gcloud storage buckets add-iam-policy-binding gs://$GCS_BUCKET_NAME \
--member="serviceAccount:$GCP_SERVICE_ACCOUNT" \
--role="roles/storage.objectAdmin"
gcloud storage buckets add-iam-policy-binding gs://$GCS_BUCKET_NAME \
--member="serviceAccount:$GCP_SERVICE_ACCOUNT" \
--role="roles/storage.legacyBucketReader"
在 Snowflake 中驗證存取權
返回 Snowflake 工作表,執行下列指令,確認 Snowflake 現在可以順利連線至 GCS bucket。
SELECT SYSTEM$VERIFY_EXTERNAL_VOLUME('codelabs_retl_ext_vol');
結果應為包含 "success":true 的 JSON 物件。
如要進一步瞭解 Snowflake 中的外部磁碟區,請參閱官方說明文件。
匯出範例訂單資料
現在您可以在 Snowflake 中建立 Iceberg 資料表。下列指令會指示 Snowflake 執行查詢,並以 Iceberg 格式將結果儲存在 GCS 中。資料檔案為 Parquet 格式,中繼資料為 Avro 和 JSON 格式,所有檔案都會儲存在 codelabs_retl_ext_vol 外部磁碟區定義的位置。
建立資料庫
- 在左側選單的「Horizon Catalog」下方,將游標懸停在「Catalog」上,然後點選「Database Explorer」。
- 前往「資料庫」頁面後,按一下右上方的「+ 資料庫」按鈕。
- 將新資料庫命名為
codelabs_retl_db
USE DATABASE codelabs_retl_db;
CREATE ICEBERG TABLE REGIONAL_SALES_ICEBERG (
NATION_NAME STRING,
MARKET_SEGMENT STRING,
ORDER_YEAR INTEGER,
ORDER_PRIORITY STRING,
TOTAL_ORDER_COUNT INTEGER,
TOTAL_REVENUE NUMBER(24,2),
UNIQUE_CUSTOMER_COUNT INTEGER
)
EXTERNAL_VOLUME = 'codelabs_retl_ext_vol'
CATALOG = 'SNOWFLAKE'
BASE_LOCATION = 'regional_sales_iceberg'
AS (
SELECT
n.n_name AS nation_name,
c.c_mktsegment AS market_segment,
YEAR(o.o_orderdate) AS order_year,
o.o_orderpriority AS order_priority,
COUNT(o.o_orderkey) AS total_order_count,
ROUND(SUM(o.o_totalprice), 2) AS total_revenue,
COUNT(DISTINCT c.c_custkey) AS unique_customer_count
FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.orders AS o
INNER JOIN SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.customer AS c
ON o.o_custkey = c.c_custkey
INNER JOIN SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.nation AS n
ON c.c_nationkey = n.n_nationkey
GROUP BY
n.n_name,
c.c_mktsegment,
YEAR(o.o_orderdate),
o.o_orderpriority
);
如要進一步瞭解如何使用 Snowflake 建立及管理 Iceberg 資料表,請參閱官方說明文件。
在 GCP 中驗證資料
現在請檢查 GCS bucket。您應該會看到 Snowflake 建立的檔案。這表示匯出作業已順利完成。Iceberg 中繼資料會位於 metadata 資料夾中,實際資料則會以 Parquet 檔案的形式位於 data 資料夾中。
gcloud storage ls "gs://$GCS_BUCKET_NAME/snowflake_extvol/**"
確切的檔案名稱會有所不同,但結構應如下所示:
gs://$GCS_BUCKET_NAME/snowflake_extvol/ gs://$GCS_BUCKET_NAME/snowflake_extvol/regional_sales_iceberg.snvrAWuR/data/snow_cbsKIRmdDmo_wLg128fugxg_0_2_009.parquet ... gs://$GCS_BUCKET_NAME/snowflake_extvol/regional_sales_iceberg.snvrAWuR/metadata/00001-62f831ff-6708-4494-94c5-c891b7ad447f.metadata.json ...
資料現在已從 Snowflake 複製到 Google Cloud Storage,並採用 Iceberg 格式。
我們有了這份清單後,請將 metadata.json 檔案儲存至環境變數,稍後會用到。
export GCS_METADATA_JSON=$(gcloud storage ls "gs://$GCS_BUCKET_NAME/snowflake_extvol/**" | grep .metadata.json)
5. 設定 BigQuery 外部資料表
Iceberg 資料表現在位於 Google Cloud Storage 中,下一步是讓 BigQuery 能夠存取該資料表。您可以建立 BigLake 外部資料表來完成這項操作。
BigLake 是一種儲存引擎,可讓您在 BigQuery 中建立資料表,直接從 Google Cloud Storage 等外部來源讀取資料。在本實驗室中,這項技術是 BigQuery 瞭解剛匯出的 Iceberg 資料表的關鍵,不必擷取資料。
如要讓這項功能正常運作,需要兩個元件:
- 雲端資源連線:這是 BigQuery 和 GCS 之間的安全連結。系統會使用特殊服務帳戶處理驗證,確保 BigQuery 具備從 GCS bucket 讀取檔案的必要權限。
- 外部資料表定義:這會告知 BigQuery 在 GCS 中尋找 Iceberg 資料表的中繼資料檔案,以及應如何解讀。
設定 Google Cloud Storage 連線
首先,系統會建立連線,讓 BigQuery 存取 GCS。這項指令會在 BigQuery 中建立連線資源。
bq mk \
--connection \
--project_id=$GCP_PROJECT \
--location=$GCP_REGION \
--connection_type=CLOUD_RESOURCE \
codelabs-retl-connection
成功訊息如下所示:
Connection 12345678.region.codelabs-retl-connection successfully created
如要進一步瞭解 BigQuery 中的 Cloud 資源連線,請參閱 Google Cloud 說明文件。
授權 BigQuery 連線讀取資料
新的 BigQuery 連線有自己的服務帳戶,需要具備從 Google Cloud Storage 值區讀取資料的權限。
1. 取得連線服務帳戶
首先,請從剛建立的連線取得服務帳戶 ID:
bq show \
--location $GCP_REGION \
--connection codelabs-retl-connection
結果會顯示相符連線的表格。
請將 serviceAccountId 設為環境變數,以供後續使用。
export GCP_BQ_SERVICE_ACCOUNT=<Your service account email>
2. 授予權限
執行下列指令,授權服務帳戶查看 GCS bucket 中的資料。
gcloud storage buckets add-iam-policy-binding \
gs://$GCS_BUCKET_NAME \
--member serviceAccount:$GCP_BQ_SERVICE_ACCOUNT \
--role roles/storage.objectViewer
建立外部資料表
現在,請在 BigQuery 中建立 BigLake 外部資料表。這項指令不會移動任何資料。這項操作只會建立指向 GCS 中現有資料的指標,您需要 Snowflake 建立的其中一個 .metadata.json 檔案路徑。
bq mk --dataset --location=$GCP_REGION codelabs_retl
bq mk \
--table \
--location=$GCP_REGION \
--external_table_definition=ICEBERG=$GCS_METADATA_JSON@projects/$GCP_PROJECT/locations/$GCP_REGION/connections/codelabs-retl-connection \
codelabs_retl.regional_sales
在 BigQuery 中驗證資料
現在,您可以使用標準 SQL 查詢這個資料表,就像查詢任何其他 BigQuery 資料表一樣。BigQuery 會使用連線,即時從 GCS 讀取 Parquet 檔案。
bq query \
--location=$GCP_REGION \
--nouse_legacy_sql "SELECT * FROM \`$GCP_PROJECT.codelabs_retl.regional_sales\` LIMIT 10;"
6. 將資料從 BigQuery 匯入 Spanner:最後一個步驟
管道的最後一個也是最重要的部分已完成:將資料從 BigLake 資料表移至 Spanner。這是「反向 ETL」步驟,資料在資料倉儲中經過處理和管理後,會載入營運系統供應用程式使用。
Spanner 是全代管的全球分散式關聯資料庫,Cloud Spanner 具有傳統關聯式資料庫的交易一致性,但能夠水平擴充 NoSQL 資料庫。因此非常適合建構可擴充的高可用性應用程式。
程序如下:
- 在 Spanner 資料庫中建立符合資料結構的資料表結構定義。
- 執行 BigQuery
EXPORT DATA查詢,將資料從 BigLake 資料表直接載入 Spanner 資料表。
建立 Spanner 資料表
從 BigQuery 移轉資料前,必須先在 Spanner 中建立具有相容結構定義的目的地資料表。
gcloud spanner databases ddl update $SPANNER_DB \
--instance=$SPANNER_INSTANCE \
--ddl="$(cat <<EOF
CREATE TABLE regional_sales (
nation_name STRING(MAX),
market_segment STRING(MAX),
order_year INT64,
order_priority STRING(MAX),
total_order_count INT64,
total_revenue NUMERIC,
unique_customer_count INT64
) PRIMARY KEY (nation_name, market_segment, order_year, order_priority);
EOF
)"
從 BigQuery 匯出資料
這是最後一個步驟。在 BigQuery BigLake 資料表中準備好來源資料,並在 Spanner 中建立目的地資料表後,實際的資料移動作業會出乎意料地簡單。系統會使用單一 BigQuery SQL 查詢:EXPORT DATA。
這項查詢專為這類情境設計。可有效率地將資料從 BigQuery 資料表 (包括 BigLake 資料表等外部資料表) 匯出至外部目的地。在本例中,目的地是 Spanner 資料表。
bq query --location=$GCP_REGION --use_legacy_sql=false <<EOF
EXPORT DATA OPTIONS (
uri="https://spanner.googleapis.com/projects/${GCP_PROJECT}/instances/${SPANNER_INSTANCE}/databases/${SPANNER_DB}",
format='CLOUD_SPANNER',
spanner_options="""{
"table": "regional_sales",
"priority": "HIGH"
}"""
) AS
SELECT * FROM \`${PROJECT_ID}.codelabs_retl.regional_sales\`
EOF
查詢完成後,「結果」窗格應會顯示「更新完成」。
7. 驗證 Spanner 中的資料
恭喜!已成功建構及執行完整的 Reverse ETL 管道。最後一個步驟是確認資料是否已如預期匯入 Spanner。
gcloud spanner databases execute-sql \
--instance=$SPANNER_INSTANCE \
$SPANNER_DB \
--sql='SELECT * FROM regional_sales LIMIT 10'
匯入的範例資料會如要求顯示:
nation_name market_segment order_year order_priority total_order_count total_revenue unique_customer_count ALGERIA AUTOMOBILE 1992 1-URGENT 375 59232423.66 298 ALGERIA AUTOMOBILE 1992 2-HIGH 328 47371891.08 269 ALGERIA AUTOMOBILE 1992 3-MEDIUM 346 52823195.87 262 ALGERIA AUTOMOBILE 1992 4-NOT SPECIFIED 365 52935998.34 288 ALGERIA AUTOMOBILE 1992 5-LOW 380 54920263.68 293 ALGERIA AUTOMOBILE 1993 1-URGENT 394 63145618.78 312 ALGERIA AUTOMOBILE 1993 2-HIGH 340 50737488.4 277 ALGERIA AUTOMOBILE 1993 3-MEDIUM 383 55871057.46 298 ALGERIA AUTOMOBILE 1993 4-NOT SPECIFIED 365 56424662.05 291 ALGERIA AUTOMOBILE 1993 5-LOW 363 54673249.06 283
分析資料和營運資料之間的鴻溝已成功弭平。
8. 清除
清除 Spanner
刪除 Spanner 資料庫和執行個體
gcloud spanner instances delete $SPANNER_INSTANCE
清除 GCS
刪除為代管資料而建立的 GCS Bucket
gcloud storage rm --recursive gs://$GCS_BUCKET_NAME
清除 BigQuery
bq rm -r codelabs_retl
bq rm --connection --location=$GCP_REGION codelabs-retl-connection
清理 Snowflake
捨棄資料庫
- 在左側選單的「Horizon Catalog」下方,將游標懸停在「Catalog」上,然後點選「Database Explorer」。
- 按一下
CODELABS_RETL_DB資料庫右側的「...」,展開選項並選取「Drop」 - 在彈出的確認對話方塊中,選取「Drop Database」
刪除活頁簿
- 在左側選單的「處理資料」下方,將游標懸停在「專案」上,然後點選「工作區」。
- 在「我的工作區」側邊欄中,將滑鼠游標懸停在您用於本實驗室的不同工作區檔案上,顯示「...」其他選項,然後點選該選項
- 選取「刪除」,然後在彈出的確認對話方塊中再次選取「刪除」。
- 針對您為本實驗室建立的所有 SQL 工作區檔案執行這項操作。
刪除外部磁碟區
- 在左側選單的「Horizon Catalog」下方,將游標懸停在「Catalog」上,然後點選「External Data」
- 按一下
CODELABS_RETL_EXT_VOL右側的
,然後選取「卸除外部磁碟區」,接著在確認對話方塊中再次點選「卸除外部磁碟區」
9. 恭喜
恭喜您完成本程式碼研究室。
涵蓋內容
- 如何將資料載入 Snowflake
- 如何建立 GCS 值區
- 如何以 CSV 格式將 Snowflake 資料表匯出至 GCS
- 如何設定 Spanner 執行個體
- 如何使用 Dataflow 將 CSV 資料表載入 Spanner