SQL での変数を使用する

注釈

変数をサポートするには、プロジェクト定義バージョン1.1が必要です。

プロジェクトファイルを使用して、snow sql などの他のコマンドが使用できる変数を定義することもできます。プロジェクト定義ファイル(通常は snowflake.yml)の env セクションでは、次のように変数を定義できます。

definition_version: 2
env:
  database: "dev"
  role: "eng_rl"
Copy

プロジェクト定義ファイルに env セクションを追加すると、コマンド行で変数と値を指定する代わりに、snow sql コマンドに変数を渡すことができます。

代わりに、次のように --variable オプションを使用してコマンドラインでデータベースとロールを指定します。

snow sql \
-q "grant usage on database <% database %> to <% role %>" \
-D "database=dev" \
-D "role=eng_rl"
Copy

env セクションで定義された変数を次のように指定できます。

snow sql -q "grant usage on database <% ctx.env.database %> to <% ctx.env.role %>"
Copy

プロジェクト定義ファイルに含める他のセクションに加えて、 env セクションを含めることができます。

definition_version: 2
entities:
  test_function:
    type: "function"
    stage: "dev_deployment"
    artifacts: ["app/"]
    handler: "functions.hello_function"
    signature: ""
    returns: string

  hello_procedure:
    type: "procedure"
    stage: "dev_deployment"
    artifacts: ["app/"]
    handler: "procedures.hello_procedure"
    signature:
      - name: "name"
        type: "string"
    returns: string

env:
  database: "dev"
  role: "eng_rl"
Copy

注釈

現在のプロジェクト定義ファイルで definition_version: 1 が使用されている場合、変数機能を利用するには definition_version: 1.1 に更新する必要があります。値を変更しない場合、 Snowflake CLI は env セクションを無視しますが、他のタイプのプロジェクト(この例では snowpark)は期待通りに機能します。

snowflake.yml プロジェクト定義ファイルで定義された変数は、同じ名前のシェル環境変数(大文字と小文字を区別)を設定することで上書きできます。たとえば、例で定義されている database 値を上書きするには、次のシェルコマンドを実行します。

export database="other"
Copy

env 変数の使用については、 snowflake.yml プロジェクト定義ファイルに変数を保存する をご参照ください。