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 |
| Python | 3.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"
deactivatedbt-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 ของการย้ายระบบ
แทร็ก Learner
โมดูลภาคปฏิบัติที่คุณทำจริง ตั้งแต่แล็ปท็อปเปล่าไปจนถึงเวิร์กโหลดที่ย้ายและเบนช์มาร์กเรียบร้อยแล้ว
01 สภาพแวดล้อมต้นทาง
จัดเตรียมสภาพแวดล้อม Snowflake ที่สะท้อนการติดตั้งใช้งานของลูกค้าจริง — 50 ล้านแถว, ไปป์ไลน์ dbt แบบ Medallion, producer การเดินทางที่ทำงานสด และแดชบอร์ด Superset สามตัว