01 ソース環境
Snowflake のソース環境をプロビジョニングするためのファシリテーター向けガイド — 所要時間、動かし続ける必要がある producer、トラブルシューティング。
学習者向けレッスン 01 ソース環境 に対応するファシリテーター向けの手引きです。
所要時間
合計で約 45 分。Step 2(./setup.sh)が唯一の無人区間で、おおよそ 5〜10 分、その大半は
TABLE(GENERATOR) による合成データのシードです。黙って眺めるより話しながら過ごす価値が
あり、下記のトークトラックに適したタイミングです。残りの時間(Step 1 と Step 3〜5)は
パートナーがキーボードに向かう必要があります。認証情報の設定、producer と Superset が
立ち上がったことの確認、dbt のリフレッシュループの起動、7 本のクエリの読み込みです。
トークトラック
- このモジュールは、おもちゃのようなテーブルではなく、移行するに値するソースを構築するために
存在します。
VARIANTカラム、CDC ストリーム、2 つのスケジュールされたタスク、そしてその すべての上に載る BI レイヤーです。これらのすべてが、モジュール 02 で具体的な移行判断に なります。 - Medallion の形を図の上で一度たどってください。
NYC_TAXI_DB内の RAW -> STAGING -> ANALYTICS と、dbt とは独立にそれを動かし続ける 2 つのオブジェクト —TRIPS_CDC_STREAMと 2 つのスケジュールされたタスクです。 - パートナーがモジュール 02 までクエリを変換しないとしても、クエリライブラリ(Step 5)を 指し示してください。7 本のそれぞれに ClickHouse 側の下書きとなるコメントが既に付いている ため、パートナーは今のうちからパターンの照合を始められます。
- モジュールの最後にも繰り返し、はっきりと伝えてください。producer と dbt のリフレッシュ ループは動かし続けること。モジュール 05 のカットオーバーは、移行中に producer が Snowflake と ClickHouse の間に生じさせた正確なギャップを計測します。ここで片付けようとして 停止してしまったパートナーは、3 つ先のモジュールでのそのデモンストレーションを気付かない うちに壊してしまいます。
よくある失敗
terraform initがプロバイダーのエラーで失敗する。 Terraform >= 1.6 であること、 そしてマシンから Terraform レジストリへのインターネットアクセスがあることを確認します。snowsqlの接続が拒否される。SNOWFLAKE_ORGとSNOWFLAKE_ACCOUNTを検証し、snowsql -a ${SNOWFLAKE_ORG}-${SNOWFLAKE_ACCOUNT} -u ${SNOWFLAKE_USER}で直接テストします。dbt runがrelation not foundで失敗する。 まず./setup.sh --skip-seedを実行して ください。これがデータベース構造を作成します。そしてprofiles.ymlがNYC_TAXI_DBを 指していることを確認します。- Superset が
connection refusedを表示する。 Superset はdocker-compose upの後、 初期化に約 60 秒かかります。それ以降もまだ落ちている場合はdocker logs nyc_taxi_supersetを確認します。 - データのシードがパートナーの予想より長くかかる。
TABLE(GENERATOR)の insert は おおよそ 10〜12 分で 5,000 万行を生成し、その後 5,000 万行すべてのTRIP_METADATAJSON カラムを埋めるUPDATEは、SMALL のウェアハウスではさらに 15〜20 分かかることがあります。 これは大きなVARIANTカラムの更新における Snowflake の正常な挙動で、停止ではありません。 正しく動いているスクリプトのトラブルシューティングをパートナーが始める前に、そう伝えて ください。 - このモジュールが「終わった」ように見えた時点で、パートナーがトリップ producer を止めて しまう。 終わっていません。モジュール 02 から 05 はすべてそれが動き続けていることに依存し、 モジュール 05 のカットオーバーはとりわけそれが生じさせるギャップを計測します。これは ワークショップ全体で最も損害の大きい、片付け好きゆえのミスです。一度ではなく明示的に 伝えてください。
リセット手順
- 約 10 分のデータロードを払い直さずに再プロビジョニングする:
./setup.sh --skip-seed(インフラは既に存在し、TRIPS_RAWにも既にデータがある場合)。 - Terraform や SQL の変更だけを反復する:
./setup.sh --skip-seedのみ。 - dbt モデルだけを反復し、Superset を完全にスキップする:
./setup.sh --skip-seed --skip-superset。 - dbt を再実行せずに Terraform の変更をテストする:
--skip-dbtを追加します。 - dbt モデルのスキーマ変更後にインクリメンタルの完全再構築を強制する:
--full-refresh(データロードも払い直すのを避けるため--skip-seedと組み合わせます)。 - 環境が回復不能な場合に限る完全リセット:
workshop_public/snowflake_migration_lab/01-setup-snowflake/からsource .env && ./teardown.shを実行し、その後プレーンな./setup.shを再実行します。 これは破壊的で、約 10〜12 分のシード全体を払い直します。行き詰まったパートナーへの 最初の対応として手を伸ばさないでください。