SQL での変数を使用する¶
注釈
変数をサポートするには、プロジェクト定義バージョン1.1が必要です。
プロジェクトファイルを使用して、snow sql
などの他のコマンドが使用できる変数を定義することもできます。プロジェクト定義ファイル(通常は snowflake.yml
)の env
セクションでは、次のように変数を定義できます。
definition_version: 2
env:
database: "dev"
role: "eng_rl"
プロジェクト定義ファイルに env
セクションを追加すると、コマンド行で変数と値を指定する代わりに、snow sql
コマンドに変数を渡すことができます。
代わりに、次のように --variable
オプションを使用してコマンドラインでデータベースとロールを指定します。
snow sql \
-q "grant usage on database <% database %> to <% role %>" \
-D "database=dev" \
-D "role=eng_rl"
env
セクションで定義された変数を次のように指定できます。
snow sql -q "grant usage on database <% ctx.env.database %> to <% ctx.env.role %>"
プロジェクト定義ファイルに含める他のセクションに加えて、 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"
注釈
現在のプロジェクト定義ファイルで definition_version: 1
が使用されている場合、変数機能を利用するには definition_version: 1.1
に更新する必要があります。値を変更しない場合、 Snowflake CLI は env
セクションを無視しますが、他のタイプのプロジェクト(この例では snowpark
)は期待通りに機能します。
snowflake.yml
プロジェクト定義ファイルで定義された変数は、同じ名前のシェル環境変数(大文字と小文字を区別)を設定することで上書きできます。たとえば、例で定義されている database
値を上書きするには、次のシェルコマンドを実行します。
export database="other"
env
変数の使用については、 snowflake.yml プロジェクト定義ファイルに変数を保存する をご参照ください。