EXECUTE NOTEBOOK

EXECUTE NOTEBOOK

노트북 편집기(Notebook Editor) 밖에서 노트북을 실행하는 명령이에요. 워크시트에서 단독으로 실행하거나, 저장 프로시저나 태스크 같은 다른 Snowflake 실행 가능 객체 안에 중첩하거나, 서드파티 오케스트레이터에서 사용할 수 있어요.

출처: 문서

본문

이 명령은 노트북의 모든 셀에서 최신 코드를 실행해요. 결과는 Notebook Editor에서 접근할 수 있어요.

참고: EXECUTE NOTEBOOKQUERY_WAREHOUSE 파라미터도 설정해야 해요. 그렇지 않으면 오류가 발생해요. QUERY_WAREHOUSE 파라미터를 설정하려면 ALTER NOTEBOOK 명령을 사용해요.

구문 (Syntax)

EXECUTE NOTEBOOK <name>([ <parameter_string> [ , <parameter_string> ... ] ]);

필수 파라미터 (Required parameters)

  • name — 노트북의 식별자(이름)를 지정해요. 노트북이 생성되는 스키마 내에서 고유해야 해요. 노트북이 현재 작업 중인 database.schema에 저장되어 있지 않으면 정규화되어야 해요. 또한 식별자는 알파벳 문자로 시작해야 하며, 전체 식별자 문자열을 큰따옴표로 묶지 않는 한 공백이나 특수 문자를 포함할 수 없어요. 큰따옴표로 묶은 식별자는 대소문자를 구분해요.

선택 파라미터 (Optional parameters)

  • parameter_string — 노트북에 인자를 선택적으로 전달해요. 노트북의 Python 셀에서 sys.argv 변수로 이 인자에 접근할 수 있어요. 문자열만 지원되며, 다른 데이터 유형(정수, 부울 등)은 NULL로 해석돼요.

접근 제어 요구사항 (Access control requirements)

이 작업을 실행하는 역할은 최소한 다음 권한을 가져야 해요:

Privilege Object Notes
OWNERSHIP Notebook OWNERSHIP은 객체 생성 역할에 자동 부여되는 특수 권한이지만, 소유 역할(또는 MANAGE GRANTS 권한이 있는 역할)이 GRANT OWNERSHIP 명령으로 다른 역할에 이전할 수도 있어요.

사용 메모 (Usage notes)

EXECUTE NOTEBOOK 명령으로 노트북을 실행할 때:

  • Python 셀은 RUNTIME 파라미터가 정의한 컴퓨팅 풀에서 실행돼요.
  • SQL 및 Snowpark 쿼리는 WAREHOUSE 파라미터에 지정된 가상 웨어하우스를 사용하여 실행돼요.
  • Snowflake는 EXECUTE AS USER로 구성된 태스크에 EXECUTE NOTEBOOK 명령을 포함하는 것을 지원하지 않아요. 이런 태스크를 만들 때 오류 메시지는 표시되지 않지만, 태스크가 실행될 때 실패해요.
  • 컴퓨팅 풀을 사용하는 노트북을 실행하면 Python 코드가 컴퓨팅 풀에서 실행돼요. 그러나 Query History에서 EXECUTE NOTEBOOK 명령을 실행하는 데 웨어하우스가 사용된 활동이 보일 수 있어요. 이는 정상 동작이에요. 웨어하우스는 노트북 실행 환경을 초기화하는 데 잠깐 사용되지만 웨어하우스 크레딧을 소비하지 않아요. 모든 코드 실행은 컴퓨팅 풀이 처리해요.

예시 (Example)

다음 예시는 인자를 전달하지 않고 지정된 노트북의 기본 버전을 트리거해요:

EXECUTE NOTEBOOK MY_DB.PUBLIC.MY_NOTEBOOK();

노트북에 매개변수 전달 (Pass parameters to a notebook)

노트북을 실행할 때 인자를 선택적으로 전달할 수 있어요. Python 셀에서 명령줄 인자를 보유하는 내장 Python 목록인 sys.argv 변수로 이 인자에 접근할 수 있어요. 인자로 노트북 동작을 사용자 지정할 수 있어요. 예를 들어 입력 값을 전달하거나, 대상 환경을 지정하거나, 이 인자에 따라 실행 로직을 조정할 수 있어요.

EXECUTE NOTEBOOK MY_DATABASE.PUBLIC.MY_NOTEBOOK(
  'parameter_string a,b,c,d',
  'target_database=PROD_DB'
);

노트북의 Python 셀에서 sys.argv 목록의 문자열로 각 인자에 접근할 수 있어요.

더 알아보기 (Learn more)