メインコンテンツへスキップ

概要

Snowflakeツールを使用すると、Snowflakeデータベースに対してSQLクエリを実行できます。

主な機能

  • SNOWFLAKE_RUN_QUERY
    • Snowflakeに対してSQLクエリを実行します。
    • クエリごとにウェアハウス・データベース・スキーマ・ロールを上書きできます。
    • 結果を構造化されたデータ(カラムと行)として取得します。

認証

アカウント識別子・ユーザー名・パスワードを含む SNOWFLAKE シークレットを作成してください。パスワード認証のみサポートしています(キーペア認証・OAuthは未対応です)。
  • Account: Snowflakeアカウント識別子(例: myorg-myaccount)。SnowsightのURL https://app.snowflake.com/<組織名>/<アカウント名>/… から <組織名>-<アカウント名> の形で読み取れます。
  • User: 接続に使用するSnowflakeユーザー名
  • Password: そのユーザーのパスワード
注意: 認証情報は機密情報として扱い、公開リポジトリにコミットしないでください。

推奨: 専用のサービスユーザーを作成する

Snowflakeは人間ユーザーにMFAを強制するため、ツールからのパスワード単独ログインはブロックされることがあります。TYPE = LEGACY_SERVICE の専用ユーザーを作成し、権限を明示的に付与してください。権限は階層(ウェアハウス → データベース → スキーマ → テーブル)をすべて通す必要があり、1つでも欠けると Object '…' does not exist or not authorized エラーになります:

ウェアハウス・データベース・スキーマ・ロール

これらはクエリがどの計算リソース・名前空間で実行されるかを決めるものです。シークレットには含まれません — ステップごとの入力として渡すことで、同じシークレットを複数のウェアハウス・データベース・ロールで使い回せます。
  • Warehouse: クエリを実行する仮想ウェアハウス(計算クラスタ)
  • Database / Schema: クエリの実行対象となる名前空間
  • Role: セッションで使用するセキュリティロール。省略した場合はユーザーのデフォルトロールが使われます。
実行のたびに新しいセッションが開かれるため、Snowsightのワークシートで実行した USE WAREHOUSE / USE SCHEMA は引き継がれません。これらの入力を設定するか、クエリ内でテーブル名を完全修飾(db.schema.table)してください。

大きな整数について

NUMBER/INTEGER 型の独立したカラムの整数は、安全な範囲(2^53以内)なら通常のJSON数値として、それを超える場合は文字列として返るため、精度は失われません。一方、VARIANT/OBJECT/ARRAY カラムの中にネストされた整数はこの保護の対象外で、2^53を超えると精度が落ちる場合があります。SnowflakeのドライバがJSON部分を通常のJSON数値として解析するためです。半構造化データから大きな整数を正確に取得したい場合は、クエリ内で文字列にキャストしてから取得してください(例: data:big_id::string)。

例: Snowflakeクエリの実行