SQL에서 변수 사용하기

참고

변수를 지원하려면 프로젝트 정의 버전 1.1이 필요합니다.

프로젝트 파일을 사용하여 snow sql 같은 다른 명령이 사용할 수 있는 변수를 정의할 수도 있습니다. 프로젝트 정의 파일의 env 섹션(일반적으로 snowflake.yml)에서 다음과 같이 변수를 정의할 수 있습니다.

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 프로젝트 정의 파일에 변수 저장하기 섹션을 참조하십시오.