概要
Snowflakeツールを使用すると、Snowflakeデータベースに対してSQLクエリを実行できます。主な機能
SNOWFLAKE_RUN_QUERY- Snowflakeに対してSQLクエリを実行します。
- クエリごとにウェアハウス・データベース・スキーマ・ロールを上書きできます。
- 結果を構造化されたデータ(カラムと行)として取得します。
認証
アカウント識別子・ユーザー名・パスワードを含むSNOWFLAKE シークレットを作成してください。パスワード認証のみサポートしています(キーペア認証・OAuthは未対応です)。
- Account: Snowflakeアカウント識別子(例:
myorg-myaccount)。SnowsightのURLhttps://app.snowflake.com/<組織名>/<アカウント名>/…から<組織名>-<アカウント名>の形で読み取れます。 - User: 接続に使用するSnowflakeユーザー名
- Password: そのユーザーのパスワード
推奨: 専用のサービスユーザーを作成する
Snowflakeは人間ユーザーにMFAを強制するため、ツールからのパスワード単独ログインはブロックされることがあります。TYPE = LEGACY_SERVICE の専用ユーザーを作成し、権限を明示的に付与してください。権限は階層(ウェアハウス → データベース → スキーマ → テーブル)をすべて通す必要があり、1つでも欠けると Object '…' does not exist or not authorized エラーになります:
ウェアハウス・データベース・スキーマ・ロール
これらはクエリがどの計算リソース・名前空間で実行されるかを決めるものです。シークレットには含まれません — ステップごとの入力として渡すことで、同じシークレットを複数のウェアハウス・データベース・ロールで使い回せます。- Warehouse: クエリを実行する仮想ウェアハウス(計算クラスタ)
- Database / Schema: クエリの実行対象となる名前空間
- Role: セッションで使用するセキュリティロール。省略した場合はユーザーのデフォルトロールが使われます。
USE WAREHOUSE / USE SCHEMA は引き継がれません。これらの入力を設定するか、クエリ内でテーブル名を完全修飾(db.schema.table)してください。
大きな整数について
NUMBER/INTEGER 型の独立したカラムの整数は、安全な範囲(2^53以内)なら通常のJSON数値として、それを超える場合は文字列として返るため、精度は失われません。一方、VARIANT/OBJECT/ARRAY カラムの中にネストされた整数はこの保護の対象外で、2^53を超えると精度が落ちる場合があります。SnowflakeのドライバがJSON部分を通常のJSON数値として解析するためです。半構造化データから大きな整数を正確に取得したい場合は、クエリ内で文字列にキャストしてから取得してください(例: data:big_id::string)。