Snowflake MigrationClickHouse Workshops

00 ตั้งค่า

ติดตั้งชุดเครื่องมือ, สร้างบัญชีทดลองใช้สองคลาวด์, โคลนรีโป และสร้าง virtualenv ของ dbt ทั้งสองตัว — ทุกอย่างที่การย้ายระบบต้องมีก่อนคุณจะแตะข้อมูล

จุดเริ่มต้น

ยังไม่ได้ติดตั้งอะไรเลย คุณต้องมีเทอร์มินัลและเวลาประมาณ 30 นาที: ติดตั้งเครื่องมือ บรรทัดคำสั่งห้าตัว, สมัครทดลองใช้คลาวด์ฟรีสองที่, โคลนรีโป และสร้าง virtualenv ของ Python สองตัว

ทำไม

เวิร์กช็อปนี้จัดเตรียมสองคลาวด์ — Snowflake เป็นต้นทาง, ClickHouse Cloud เป็นเป้าหมาย — และ รัน dbt adapter สองตัวกับทั้งสองคลาวด์ หนึ่งตัวต่อหนึ่งคลาวด์ adapter ทั้งสองตัวมีเวอร์ชัน ขั้นต่ำที่เข้มงวด และตัวที่กัดจริงคือ Python: dbt-snowflake (และ dbt-clickhouse ที่ใช้ ภายหลัง) ต้องใช้ Python 3.11, 3.12 หรือ 3.13 Python 3.14+ ทำให้ dependency ทางอ้อม ชื่อ mashumaro ที่ adapter ทั้งสองพึ่งพาพัง ถ้าตั้งผิดตอนนี้ มันจะไม่พังที่นี่ — มันจะโผล่ขึ้นมา อีกสองโมดูลถัดไปในรูปของ error การ import ของ dbt ที่น่าสับสน ซึ่งดูไม่มีอะไรเกี่ยวกับ เวอร์ชัน Python ของคุณเลย การตรึงตัวแปลภาษาไว้ในโมดูลนี้คือสิ่งที่ทำให้ความล้มเหลวนั้น ไม่เกิดขึ้น

ขั้นที่ 1 — ติดตั้งชุดเครื่องมือ

เครื่องมือเวอร์ชันติดตั้งเพื่อ
Terraform>= 1.6จัดเตรียมโครงสร้างพื้นฐานของ Snowflake และ ClickHouse Cloud
Docker Desktop>= 24รัน producer การเดินทางและ Superset
Python3.11–3.13สคริปต์ย้ายข้อมูล, dbt และสคริปต์ยูทิลิตี — ดูคำเตือนด้านล่าง
dbt Core>= 1.8ไปป์ไลน์ของ Snowflake และ ClickHouse
SnowSQL CLI>= 1.2รัน SQL กับ Snowflake จากเทอร์มินัล

เวอร์ชัน Python สำคัญ dbt-snowflake และ dbt-clickhouse ต้องใช้ Python 3.11, 3.12 หรือ 3.13 ทั้งคู่ Python 3.14+ ทำให้ dependency mashumaro ที่ใช้ร่วมกัน พัง ถ้า Python ของระบบคุณเป็น 3.14+ อยู่แล้ว ให้ติดตั้ง 3.13 ไว้ข้างกัน (ตัวอย่างเช่น brew install python@3.13) แทนที่จะแทนที่ค่าเริ่มต้นของคุณ — ขั้นที่ 4 ด้านล่างใช้ตัวแปลภาษา python3.13 อย่างชัดเจนด้วยเหตุผลนี้เอง

ทุกแพ็กเกจที่คุณติดตั้งสำหรับเวิร์กช็อปนี้จะลงไปอยู่ใน virtualenv ที่แยกออกมา ไม่ใช่ pip install แบบ global เปล่า ๆ — ขั้นที่ 4 จะตั้งค่าสองตัวที่คุณต้องใช้

ขั้นที่ 2 — สร้างบัญชีคลาวด์สองบัญชี

คุณต้องมีบัญชีทดลองใช้หนึ่งบัญชีในแต่ละคลาวด์ ทั้งสองฟรีและไม่ต้องใช้บัตรเครดิต:

  • บัญชีทดลองใช้ Snowflake — นี่คือสภาพแวดล้อมต้นทาง โมดูล 01 จัดเตรียม warehouse, ฐานข้อมูล และไปป์ไลน์ Medallion ที่นี่
  • บัญชีทดลองใช้ ClickHouse Cloud — นี่คือสภาพแวดล้อม เป้าหมาย มันจะไม่ถูกแตะต้องจนกว่าโมดูล 03 จะจัดเตรียมมันและการย้ายระบบเริ่มขึ้นอย่างจริงจัง

การสมัครทั้งสองบัญชีตอนนี้หมายความว่าจะไม่มีบัญชีใดเป็นตัวขัดขวางเมื่อคุณเริ่มโมดูล 01

ขั้นที่ 3 — โคลนรีโปซิทอรี

git clone https://github.com/ClickHouse/ClickHouse_Demos.git
cd ClickHouse_Demos
cd "$(git rev-parse --show-toplevel)/workshop_public/snowflake_migration_lab"

ทุกคำสั่งในส่วนที่เหลือของเวิร์กช็อปนี้สมมติว่าคุณอยู่ใน workshop_public/snowflake_migration_lab ภายในโคลนนี้

ขั้นที่ 4 — สร้าง virtualenv ของ dbt ทั้งสองตัว

dbt-snowflake และ dbt-clickhouse ตรึงช่วง dependency ที่ขัดแย้งกัน จึงใช้ virtualenv เดียวร่วมกันไม่ได้ — คุณต้องสร้างหนึ่งตัวต่อ adapter หนึ่งตัวต่อฝั่งคลาวด์ของการย้ายระบบ

dbt-snowflake ใช้กับต้นทางในโมดูล 01:

cd "$(git rev-parse --show-toplevel)/workshop_public/snowflake_migration_lab/01-setup-snowflake"

# Use python3.13 explicitly if your system default is 3.14+
python3.13 -m venv .venv          # or: python3 -m venv .venv
source .venv/bin/activate
pip install "dbt-snowflake>=1.7,<2.0"
deactivate

dbt-clickhouse ใช้กับเป้าหมายเริ่มตั้งแต่โมดูล 03:

cd "$(git rev-parse --show-toplevel)/workshop_public/snowflake_migration_lab/03-migrate-to-clickhouse"
python3.13 -m venv .venv
source .venv/bin/activate
pip install "dbt-clickhouse>=1.8,<2.0" snowflake-connector-python clickhouse-connect
deactivate

.venv แต่ละตัวอยู่ในไดเรกทอรีโมดูลของตัวเอง — คุณ activate ตัวที่คุณต้องใช้และ deactivate เมื่อสลับ แทนที่จะพยายามทำให้สภาพแวดล้อมเดียวรองรับ adapter ทั้งสองตัว

วิธีตรวจสอบว่าคุณทำเสร็จแล้ว

cd "$(git rev-parse --show-toplevel)/workshop_public/snowflake_migration_lab"

terraform version                  # expect >= 1.6
docker --version                   # expect >= 24
python3 --version                  # expect 3.11, 3.12, or 3.13
snowsql --version                  # expect >= 1.2

source 01-setup-snowflake/.venv/bin/activate
dbt --version                      # expect dbt-snowflake >= 1.7
deactivate

source 03-migrate-to-clickhouse/.venv/bin/activate
dbt --version                      # expect dbt-clickhouse >= 1.8
deactivate

คำสั่งทั้งห้าควรพิมพ์เวอร์ชันที่เท่ากับหรือสูงกว่าขั้นต่ำที่แสดงไว้ และ dbt --version แต่ละครั้งควรแสดงรายการ adapter ที่คุณเพิ่งติดตั้งลงใน venv นั้น

สถานะปลายทาง

ชุดเครื่องมือติดตั้งแล้ว, บัญชีทดลองใช้ทั้งสองพร้อมใช้งาน, โคลนรีโปแล้ว และสร้าง virtualenv ของ dbt ทั้งสองตัวแล้ว ยังไม่มีการจัดเตรียมอะไรในคลาวด์ใดเลย — นั่นจะเริ่มใน โมดูล 01 ไปต่อที่ 01 สภาพแวดล้อมต้นทาง เพื่อ สร้างฝั่ง Snowflake ของการย้ายระบบ

ในหน้านี้

Track your progress?

Optional. We email a link to confirm your address; progress records once you open it.

Please use your work email address, not a personal one.

Progress tracking also requires accepting the current Terms of Service in Privacy settings.

TH