Snowflake Automation
Snowflakeデータウェアハウスのワークフローを自動化します。データベースの検出、スキーマやテーブルの参照、任意のSQL(SELECT、DDL、DML)の実行、Snowflakeデータ操作をクロスアプリケーションパイプラインに統合します。
ツールキットドキュメント: composio.dev/toolkits/snowflake
セットアップ
- Composio MCPサーバーをクライアントに追加:
https://rube.app/mcp - プロンプトが表示されたらSnowflakeアカウントに接続(アカウント認証情報またはキーペア認証)
- 以下のワークフローを使用開始
コアワークフロー
1. データベースの一覧表示
SNOWFLAKE_SHOW_DATABASES を使用して、オプションのフィルタリングとタイムトラベルサポート付きで利用可能なデータベースを検出します。
Tool: SNOWFLAKE_SHOW_DATABASES
Inputs:
- like_pattern: string (SQLワイルドカード、例: "%test%") -- 大文字小文字を区別しない
- starts_with: string (例: "PROD") -- 大文字小文字を区別する
- limit: integer (最大10000)
- history: boolean (タイムトラベル保持期間内のドロップされたデータベースを含む)
- terse: boolean (列のサブセットを返す: created_on, name, kind, database_name, schema_name)
- role: string (実行に使用するロール)
- warehouse: string (オプション、SHOW DATABASESには不要)
- timeout: integer (秒)
2. スキーマの参照
SNOWFLAKE_SHOW_SCHEMAS を使用して、データベース内またはアカウント全体のスキーマを一覧表示します。
Tool: SNOWFLAKE_SHOW_SCHEMAS
Inputs:
- database: string (データベースコンテキスト)
- in_scope: "ACCOUNT" | "DATABASE" | "<特定のデータベース名>"
- like_pattern: string (SQLワイルドカードフィルター)
- starts_with: string (大文字小文字を区別するプレフィックス)
- limit: integer (最大10000)
- history: boolean (ドロップされたスキーマを含む)
- terse: boolean (サブセット列のみ)
- role, warehouse, timeout: string/integer (オプション)
3. テーブルの一覧表示
SNOWFLAKE_SHOW_TABLES を使用して、行数、サイズ、クラスタリングキーなどのメタデータを含むテーブルを検出します。
Tool: SNOWFLAKE_SHOW_TABLES
Inputs:
- database: string (データベースコンテキスト)
- schema: string (スキーマコンテキスト)
- in_scope: "ACCOUNT" | "DATABASE" | "SCHEMA" | "<特定の名前>"
- like_pattern: string (例: "%customer%")
- starts_with: string (例: "FACT", "DIM", "TEMP")
- limit: integer (最大10000)
- history: boolean (ドロップされたテーブルを含む)
- terse: boolean (サブセット列のみ)
- role, warehouse, timeout: string/integer (オプション)
4. SQLステートメントの実行
SNOWFLAKE_EXECUTE_SQL をSELECTクエリ、DDL(CREATE/ALTER/DROP)、DML(INSERT/UPDATE/DELETE)に、パラメータ化されたバインディングと共に使用します。
Tool: SNOWFLAKE_EXECUTE_SQL
Inputs:
- statement: string (必須) -- SQLステートメント。複数ステートメントの場合はセミコロン区切り
- database: string (大文字小文字区別あり、DEFAULT_NAMESPACEにフォールバック)
- schema_name: string (大文字小文字区別あり)
- warehouse: string (大文字小文字区別あり、コンピュートが必要なクエリには必須)
- role: string (大文字小文字区別あり、DEFAULT_ROLEにフォールバック)
- bindings: object (SQLインジェクションを防ぐためのパラメータ化されたクエリ値)
- parameters: object (Snowflakeセッションレベルのパラメータ)
- timeout: integer (秒; 0 = 最大604800秒)
例:
"SELECT * FROM my_table LIMIT 100;""CREATE TABLE test (id INT, name STRING);""ALTER SESSION SET QUERY_TAG='mytag'; SELECT COUNT(*) FROM my_table;"
既知の落とし穴
| 落とし穴 | 詳細 |
|---|---|
| 大文字小文字の区別 | SNOWFLAKE_EXECUTE_SQLでは、データベース、スキーマ、ウェアハウス、ロール名は大文字小文字を区別します。 |
| コンピュートにはウェアハウスが必要 | SELECTおよびDMLクエリには実行中のウェアハウスが必要です。SHOWコマンドには不要です。 |
| 複数ステートメントの実行 | セミコロンで区切られた複数のステートメントは自動的に順次実行されます。 |
| SQLインジェクション防止 | ユーザー提供の値には常にbindingsパラメータを使用して、インジェクション攻撃を防止します。 |
| LIMITによるページネーション | SHOWコマンドはlimit(最大10000)とカーソルベースのページネーションのためのfrom_nameをサポートします。 |
| タイムトラベル | history: trueに設定すると、保持期間内でドロップされたオブジェクトも含まれます。 |
クイックリファレンス
| ツールスラッグ | 説明 |
|---|---|
SNOWFLAKE_SHOW_DATABASES | フィルタリングとタイムトラベルサポート付きでデータベースを一覧表示 |
SNOWFLAKE_SHOW_SCHEMAS | データベース内またはアカウント全体でスキーマを一覧表示 |
SNOWFLAKE_SHOW_TABLES | メタデータ(行数、サイズ、クラスタリング)付きでテーブルを一覧表示 |
SNOWFLAKE_EXECUTE_SQL | パラメータ化バインディングでSQL(SELECT、DDL、DML)を実行 |
Powered by Composio