Snowflake CLI入門|基本コマンドとプロジェクト管理をやさしく解説

Snowflake CLI入門|基本コマンドとプロジェクト管理をやさしく解説 Snowflake

はじめに:なぜ Snowflake CLI を学ぶの?

こんにちは!普段 Snowflake を触るとき、Snowsight(ブラウザのWeb UI)を開いて SQL を書いていませんか?もちろんそれでもOKなのですが、もう少し開発っぽいことをしたくなると…

  • ローカルの SQL ファイルをまとめて実行したい
  • Snowpark のコードを CI/CD でデプロイしたい
  • 複数の環境(dev / prod)を切り替えたい

こんなときに頼れるのが Snowflake CLI(コマンド名は snow)です。これは Snowflake が公式に提供する次世代の CLI で、SQL 実行から Snowpark / Streamlit / Native App のデプロイまで、ターミナルひとつでこなせます。この記事では、インストールから基本コマンド、そして「プロジェクト管理」と呼ばれる仕組み(snowflake.yml)までを一気に紹介します!

Snowflake CLI入門|基本コマンドとプロジェクト管理をやさしく解説

Snowflake CLI ってどんなもの?

Snowflake CLI は Python 製のオープンソースツールで、従来の SnowSQL よりも幅広い操作に対応しています。SnowSQL が「ターミナルから SQL を投げる専用ツール」だったのに対し、Snowflake CLI は「Snowflake 上のアプリ開発を丸ごと管理するツール」と考えるとイメージしやすいです。

インストール

pip(Python のパッケージマネージャ)があれば一発です。

pip install snowflake-cli

# バージョン確認
snow --version

macOS なら Homebrew、Windows なら公式インストーラも用意されています。

最初にやるのは「接続設定」

CLI から Snowflake に繋ぐためには、アカウント情報を登録します。対話形式で進められるので簡単です。

snow connection add

# 入力項目の例
# Name for this connection: dev
# Snowflake account name: xy12345.ap-northeast-1.aws
# Snowflake username: TARO
# Snowflake password: ********
# Role / Warehouse / Database / Schema もここで指定可能

登録した接続は次のコマンドで一覧・テストできます。

snow connection list
snow connection test -c dev

複数登録しておけば、-c prod のように切り替えられて便利です。

基本コマンド早見表

覚えておくと最初の一歩がスムーズな主要コマンドです。

# SQL を直接実行
snow sql -q "SELECT CURRENT_VERSION();"

# SQL ファイルを実行
snow sql -f ./scripts/init.sql

# オブジェクト一覧の取得
snow object list table --database MYDB --schema PUBLIC

# ステージにファイルをアップロード
snow stage copy ./data.csv @my_stage

SQL を投げるだけなら snow sql だけ覚えれば十分。CI のシェルスクリプトにそのまま組み込めるのが嬉しいところです。

基本コマンド早見表の解説図

プロジェクト管理:snowflake.yml が主役

Snowflake CLI の真骨頂は「プロジェクト」機能です。snowflake.yml というYAMLファイルにアプリの構成を書いておくと、snow app deploysnow snowpark deploy 一発で必要なオブジェクトをまとめてデプロイできます。

新規プロジェクトの作成

# Snowpark プロジェクトのテンプレートを生成
snow init my_project --template example_snowpark
cd my_project

生成された snowflake.yml はこんな感じ。

definition_version: 2
entities:
  hello_function:
    type: function
    handler: "functions.hello"
    signature:
      - name: "name"
        type: "string"
    returns: string
    stage: dev_stage
    artifacts:
      - src: app/
        dest: my_app/

あとは下記でデプロイすれば、Snowflake 側に UDF が登録されます。

snow snowpark build
snow snowpark deploy

Python コードを書く部分は Snowpark入門|PythonでSnowflakeのデータ処理を書こうSnowpark Python入門|DataFrameの作り方と操作をやさしく解説 が参考になりますよ。

よくあるユースケース

  • CI/CDで自動デプロイ:GitHub Actions から snow snowpark deploy を呼び、PR マージで本番反映
  • 環境ごとの切り替え:-c dev / -c prod で接続を切り替え、同じ YAML を再利用
  • 運用スクリプトの一括実行:タスクやストアドプロシージャの DDL を snow sql -f で適用

定期実行系のオブジェクト(Snowflakeタスクストアドプロシージャ)も、CLI からスクリプトで一括管理するとミスが減ります。

まとめ

Snowflake CLI は「ターミナル派の人が幸せになるツール」です。最初は snow connection addsnow sql だけ覚えれば十分。慣れてきたら snowflake.yml でプロジェクト管理にステップアップして、CI/CDまで自動化していきましょう!

参考リンク

関連記事