작업 공간에서 노트북 실행 및 예약하기

작업 공간에서 노트북 예약하기

노트북을 프로덕션에 배포할 때 Snowflake는 배포, 오케스트레이션 및 모니터링을 관리하는 네이티브 기능을 제공합니다. Snowsight 내의 작업 공간에서 대화형으로 노트북을 개발하고 반복합니다. 노트북을 예약하면 작업 공간 내용(예: .ipynb 파일, Python 스크립트 및 SQL 파일)을 캡슐화하는 노트북 프로젝트 오브젝트(NPO)라는 프로덕션 오브젝트에 해당 콘텐츠를 배포합니다. NPOs는 버전이 지정된 배포를 지원하며 스키마 수준 오브젝트입니다(예: db_name.schema_name.npo_name).

배포 후 Snowflake 작업(일관된 런타임 및 종속성 세트를 사용하여 노트북 코드를 하향식으로 실행)을 사용하거나 서드 파티 오케스트레이션 도구를 사용하여 노트북 실행을 오케스트레이션할 수 있습니다. Snowflake는 Snowsight 에서 모니터링하거나 이벤트 테이블을 통해 프로그래밍 방식으로 쿼리할 수 있는 실행 원격 분석을 캡처합니다. 자세한 내용은 작업 공간의 Notebooks에 대한 가시성 및 로깅 섹션을 참조하십시오.

노트북 프로젝트 오브젝트(NPOs)

NPO는 파이프라인에서 프로덕션용 “단위” 역할을 하는 스키마 수준 오브젝트입니다. 노트북 프로젝트는 작업 공간 또는 스테이지에 연결되고 작업 공간의 모든 파일이 복사됩니다. NPOs는 비대화형 방식으로 실행되며 예약을 위해 작업에 포함될 수 있습니다.

  • 배치: NPOs는 데이터베이스 내의 특정 스키마 내에 존재합니다(database_name.schema_name.npo_name).

  • ** 캡슐화:** 노트북을 예약하면 NPO는 실행 중에 모든 종속성을 사용할 수 있도록 전체 작업 공간 디렉터리를 캡처합니다.

  • 실행: 기본 .ipynb 파일을 지정하여 NPO를 실행합니다(예: MAIN_FILE 매개 변수). 기본 노트북은 :ref:`%run <label-nb_in_ws_edit_run_jupyter_magics>`을 사용하여 추가 노트북을 호출할 수 있습니다.

  • 예약: 동일한 NPO를 실행하는 여러 작업 오브젝트를 생성하여 동일한 노트북 프로젝트 오브젝트에 대해 여러 예약을 허용합니다.

NPOs 검색하기

NPOs는 표준 데이터베이스 오브젝트이므로 메타데이터 명령을 사용하여 예약된 작업을 감사하거나 정리할 수 있습니다.

범위

명령

현재 컨텍스트

SHOW NOTEBOOK PROJECTS;

데이터베이스 수준

SHOW NOTEBOOK PROJECTS IN DATABASE <database_name>;

스키마 수준

SHOW NOTEBOOK PROJECTS IN SCHEMA <database_name>.<schema_name>;

계정 수준

SHOW NOTEBOOK PROJECTS IN ACCOUNT;

NPOs에 대한 권한 및 공유

NPO를 실행하거나 관리하려면 역할에 다음 권한이 있어야 합니다.

  • 위치: NPO를 포함하는 데이터베이스 및 스키마에 대한 USAGE 또는 OWNERSHIP 권한이 필요합니다.

  • NPO 액세스: 특정 NPO에 대한 USAGE 또는 OWNERSHIP 권한이 필요합니다.

  • Compute: USAGE and MONITOR on the warehouse, and USAGE on the compute pool (for Container Runtime).

  • 예약: 작업을 통해 NPO가 트리거된 경우 계정 수준의 전역 EXECUTE TASK 권한이 필요합니다.

  • 외부 액세스 통합: 노트북에서 사용하는 모든 EAIs에 대한 USAGE 권한이 필요합니다.

  • 작업: NPO가 작업을 통해 예약된 경우 작업 소유자 역할에 모든 필수 오브젝트(예: NPOs, 웨어하우스 또는 데이터베이스)에 대한 USAGE 권한을 부여해야 합니다. 또한 노트북이 실행 컨텍스트를 프로그래밍 방식으로 설정하는 경우 작업 소유자 역할에는 USE DATABASE 및 USE SCHEMA 명령을 실행할 수 있는 권한이 있어야 합니다.

참고

NPOs는 호출자의 권한을 사용하며, 여기서 호출자는 역할이 아닌 사용자입니다. :doc:`EXECUTE NOTEBOOK PROJECT </sql-reference/sql/execute-notebook-project>`를 Snowsight 에서 직접 실행하는 경우 해당 실행에는 Snowsight 세션의 활성 역할이 아닌 호출 사용자의 ID가 사용됩니다. 노트북은 Snowsight 세션과는 별도의 자체 전용 세션에서 실행되며, 사용자의 기본 역할이 기본 역할로 설정되고 모든 보조 역할이 활성화됩니다. 즉, 노트북은 사용자의 역할에 부여된 모든 권한으로 을 실행할 수 있습니다.

NPO를 사용하여 노트북 예약

현재 노트북 배포 및 예약을 위해 지원되는 두 가지 시나리오가 있습니다. 두 시나리오 모두에서 노트북은 NPO에 패키징해야 합니다. :ref:`시나리오 A <label-nb_in_ws_schedule_scenario_a>`에서는 비공개 작업 공간에서 노트북을 예약합니다. :ref:`시나리오 B <label-nb_in_ws_schedule_scenario_b>`에서는 GitHub Actions(또는 다른 CI/CD 시스템)를 통합하여 :doc:`내부 또는 임시 스테이지 </sql-reference/sql/create-stage>`에서 NPOs의 생성을 자동화하고, 버전이 지정된 업데이트를 통해 수명 주기를 관리하며, Snowflake 작업을 통해 해당 실행을 오케스트레이션합니다.

시나리오

작업 공간 유형

예약 방법

A: 개별 개발

개인

지원됨. 비공개 작업 공간에서 개발합니다. :ref:`노트북 프로젝트 오브젝트 <label-nb_in_ws_schedule_npo>`(NPO)를 생성하고 작업을 예약합니다.

B: 프로덕션(CI/CD)

Git 통합

노트북 파일은 GitHub Actions(또는 다른 CI/CD 도구)를 사용하여 GitHub에서 내부 또는 임시 스테이지로 배포되며, 해당 스테이지에서 NPO가 생성/업데이트됩니다. 작업은 NPO에서 실행됩니다.

각 시나리오에 대한 자세한 워크플로는 시나리오별 워크플로 예약하기 섹션을 참조하세요.

예약된 노트북 실행 보기

다음의 세 위치에서 예약된 작업을 볼 수 있습니다.

노트북에서

예약된 실행을 보거나 상호 작용하려면 예약과 프로젝트 오브젝트가 생성된 데이터베이스 및 스키마에 대한 액세스 권한이 있는 역할을 사용해야 합니다.

  1. 탐색 메뉴에서 Projects » Workspaces 를 선택합니다.

  2. 예약된 노트북을 엽니다.

  3. 노트북 편집기의 오른쪽 상단에서 Scheduled runs 예약된 실행 아이콘 를 선택합니다. 이 팝오버에는 다음과 같은 정보가 표시됩니다.

  • 이 노트북에 대해 예약된 모든 실행.

  • 다음으로 예약된 실행 시간.

  • 과거 실행의 상태. 상태 표시기를 마우스로 가리키면 쿼리 ID, 마지막 실행 시간, 기간 및 상태와 같은 세부 정보를 볼 수 있습니다.

작업 메뉴에서

  • Open Run History: Opens the notebook’s project object showing all past runs, including status, duration, results, source file, logs, and metrics. Selecting a run’s result opens the executed notebook with its output. For more information, see 작업 공간의 Notebooks에 대한 가시성 및 로깅.

데이터베이스 탐색기에서

예약된 노트북(CI/CD를 통해 배포된 노트북 포함)의 실행 기록을 보려면 다음을 수행합니다.

  1. 탐색 메뉴에서 Catalog » Database Explorer 를 선택합니다.

  2. 노트북 프로젝트 오브젝트(NPO)가 포함된 데이터베이스 및 스키마를 선택합니다.

  3. NPO 를 선택합니다.

  4. Run history 을 선택합니다.

  5. 실행을 선택하여 로그 및 메트릭(사용 가능한 경우)과 함께 해당 실행의 노트북 출력을 확인합니다. 자세한 내용은 작업 공간의 Notebooks에 대한 가시성 및 로깅 섹션을 참조하십시오.

참고

Airflow에 의해 트리거된 노트북 실행의 실행 기록을 보려면 Airflow를 실행하는 동일한 사용자를 사용하여 |sf-web-interface|에 로그인합니다.

예약된 작업 관리

Scheduled runs 팝오버에서 예약된 작업 옆의 줄임표(추가 작업) sf 옵션 버튼 를 선택하여 예약된 작업을 관리할 수 있습니다.

  • 지금 실행: 예약된 작업의 즉시 실행을 트리거합니다.

  • 예약 일시 중단: 예약이 자동으로 실행되지 않도록 일시적으로 중단합니다. 작업은 구성된 상태로 유지되지만 재개될 때까지 실행되지 않습니다.

  • 삭제: 예약된 작업을 영구적으로 제거합니다. 기존 예약을 삭제한 후 다른 설정(예: 다른 역할 또는 데이터베이스 위치)으로 새 예약을 생성할 수 있습니다.

예약된 노트북 작업에 대한 업데이트 배포

노트북을 편집한 후에는 예약된 실행에서 업데이트된 버전을 사용하기 전에 변경 사항을 배포해야 합니다. 배포는 재현성을 보장하고 예약된 작업이 마지막으로 배포된 코드와 다른 코드를 실행하지 못하게 합니다. 이는 노트북의 첫 번째 작업이며 노트북에 배포가 필요한 변경 사항이 있는 경우 예약(캘린더) 아이콘에 시계 표시기가 표시됩니다. 예약이 이미 있는 경우 아이콘은 시계가 있는 캘린더입니다.

코드 또는 셀을 수정한 후 아이콘은 배포되지 않은 변경 사항이 있음을 나타냅니다.

  • Deploy Changes 을 선택합니다.

    그런 다음 Snowflake는 연결된 노트북 프로젝트 오브젝트를 업데이트하며, 해당 노트북에 대해 예약된 모든 작업은 다음 실행을 위해 새로 배포된 버전을 사용합니다.

오브젝트 탐색기에서 노트북 프로젝트 오브젝트(NPO) 찾기

예약된 각 노트북은 배포된 코드, 실행 기록, 아티팩트를 저장하는 NPO를 자동으로 생성합니다. 이러한 오브젝트는 Snowsight 의 오브젝트 탐색기에서 찾을 수 있습니다.

Snowsight 에서 NPO를 찾으려면 다음 단계를 따릅니다.

  1. 탐색 메뉴에서 Catalog » Database Explorer 를 선택합니다.

  2. Database » Schema » :ui:`Notebook Project Objects`로 이동하여 해당 스키마의 모든 NPOs를 확인합니다.

또는 다음을 수행할 수 있습니다.

  1. 관련 노트북을 엽니다.

  2. 노트북 편집기 상단에서 Scheduled runs 예약된 실행 아이콘 을 선택합니다.

  3. :ui:`Open run history`를 선택하여 연결된 NPO를 엽니다.

노트북의 실행 기록 보기

이 섹션에서는 예약이 생성된 후 실행 세부 정보를 확인하고 노트북 실행 문제를 해결하는 방법을 설명합니다. 실행 중에 단계가 실패하면 Snowflake는 부분적으로 또는 일관되지 않은 다운스트림 결과를 방지하기 위해 실행을 중지합니다.

실행 기록을 보려면 다음 단계를 따릅니다.

  1. 탐색 메뉴에서 Projects » Workspaces 를 선택합니다.

  2. 실행 기록을 검토하려는 노트북을 엽니다.

  3. 노트북 편집기 상단에서 Scheduled runs 예약된 실행 아이콘 을 선택합니다.

  4. 드롭다운 메뉴에서 View run history 를 선택합니다.

:ui:`Run History`는 노트북의 프로젝트 오브젝트에 대한 다음 정보를 보여줍니다.

  • 결과: 노트북과 과거 실행의 출력을 확인합니다.

  • 작업: NPO를 실행한 작업을 확인합니다.

  • 소스 파일: 실행된 노트북 파일을 확인합니다.

  • 로그 및 메트릭: 실행 로그 및 성능 메트릭을 확인합니다(로깅 및 이벤트 테이블을 활성화했는지 확인). 자세한 내용은 작업 공간의 Notebooks에 대한 가시성 및 로깅 섹션을 참조하십시오.

  • 실행 세부 정보: 시작 및 종료 시간, 실행 상태, 오류 세부 정보입니다.

작업을 사용하여 노트북 예약하기

  1. 탐색 메뉴에서 Projects » Workspaces 를 선택합니다.

  2. SQL 파일/워크시트에서 다음 명령을 실행합니다.

-- Execute a notebook project using a task
CREATE OR REPLACE TASK <database_name>.<schema_name>.<name>
  WAREHOUSE = <string>
  SCHEDULE = 'USING CRON 10 13 * * * America/Los_Angeles'
  -- CRON format: <minute> <hour> <day_of_month> <month> <day_of_week> <timezone>
AS
  -- Execute a notebook stored within a notebook project.
  EXECUTE NOTEBOOK PROJECT "<database_name>"."<schema_name>"."<project_name>"
    MAIN_FILE = 'notebook.ipynb'  -- Path to the notebook file
    COMPUTE_POOL = '<compute_pool_name>'
    RUNTIME = '<runtime_version>'  -- e.g. V2.2-CPU-PY3.11
    QUERY_WAREHOUSE = '<wh_name>'
    ARGUMENTS = '<string>'  -- Can pass a single string parsed in the notebook code
    REQUIREMENTS_FILE = '<path/to/requirements.txt>'  -- Pre-installs dependencies before the notebook runs
    EXTERNAL_ACCESS_INTEGRATIONS = ('integration_name');  -- e.g. ('http_eai', 's3_eai')
Copy

이 작업을 생성한 후 다음 명령을 실행하여 예약을 활성화합니다.

ALTER TASK <database_name>.<schema_name>.<task_name> RESUME;
Copy

활성 역할에 필요한 권한이 부족하여 작업이 실패하는 경우, Snowsight 는 누락된 권한을 해결할 수 있도록 관련 오류 메시지를 표시합니다.

구문, 매개 변수, 예제는 EXECUTE NOTEBOOK PROJECT 섹션을 참조하세요. 예약된 노트북에 매개 변수를 전달하는 방법에 대한 자세한 내용은 매개 변수로 노트북 실행 섹션을 참조하세요.

참고

크레딧 사용, 유휴 시간 제한 동작, 노트북 서비스 관리에 대해 자세히 알아보려면 컴퓨팅 설정 및 :ref:`유휴 시간 제한<label-nb_in_ws_idle_timeout>`을 참조하세요.