Snowflake Notebooks 에서 코드 개발 및 실행

이 항목에서는 Snowflake Notebooks 에서 코드를 작성하고 실행하는 방법을 설명합니다.

노트북 셀 기본 사항

이 섹션에서는 몇 가지 기본적인 셀 작업을 소개합니다. 노트북을 만들 때 세 개의 예제 셀이 표시됩니다. 해당 셀을 수정하거나 새로운 셀을 추가할 수 있습니다.

새 셀 만들기

Snowflake Notebooks 는 SQL, Python, Markdown의 세 가지 셀을 지원합니다. 새로운 셀을 만들려면 기존 셀 위에 마우스를 올려놓거나 노트북 맨 아래로 스크롤한 다음, 추가할 셀 유형에 대한 버튼 중 하나를 선택하면 됩니다.

노트북 하단에 새로운 셀 버튼을 추가합니다.

셀을 생성한 후에는 언제든지 두 가지 방법 중 하나를 사용하여 셀의 언어를 변경할 수 있습니다.

셀 이동

마우스로 셀을 끌어서 놓거나 작업 메뉴를 사용하여 셀을 이동할 수 있습니다.

  1. (옵션 1) 이동할 기존 셀 위에 마우스를 올려 놓습니다. 마우스로 끌어서 놓기 아이콘을 선택하고 셀을 새 위치로 이동합니다.

    셀을 이동하려면 끌어서 놓기를 사용합니다.
  2. (옵션 2) 세로 줄임표 워크시트에 대한 추가 작업 (작업) 메뉴를 선택합니다. 그런 다음 적절한 작업을 선택합니다.

    셀을 이동하기 위한 작업 메뉴.

참고

셀 간에 초점을 이동하려면 위로아래로 화살표를 사용합니다.

셀 삭제

셀을 삭제하려면 노트북에서 다음 단계를 완료합니다.

  1. 세로 줄임표 워크시트에 대한 추가 작업 (추가 작업) 메뉴를 선택합니다.

  2. Delete 를 선택합니다.

  3. Delete 를 선택하여 다시 확인합니다.

키보드 단축키 를 사용하여 셀을 삭제할 수도 있습니다.

Python 및 SQL 셀 사용 시 고려 사항은 노트북 실행을 위한 고려 사항 섹션을 참조하십시오.

Snowflake Notebooks 에서 Python 및 SQL 실행

Python 및 SQL 셀을 Snowflake Notebooks 에서 실행하려면 다음을 수행합니다.

  • 단일 셀 실행: 코드를 자주 업데이트하는 경우 이 옵션을 선택합니다.

    • Mac 키보드의 경우 CMD + Return 을 누르거나 Windows 키보드의 경우 CTRL + Enter 를 누릅니다.

    • 이 셀 실행 또는 Run this cell only 를 선택합니다.

  • 노트북의 모든 셀을 순차적으로 실행: 수신자가 최신 정보를 볼 수 있도록 노트북을 발표하거나 공유하기 전에 이 옵션을 선택합니다.

    • Mac 키보드의 경우 CMD + Shift + Return 을 누르거나 Windows 키보드의 경우 CTRL + Shift + Enter 를 누릅니다.

    • Run all 를 선택합니다.

  • 셀을 실행하고 다음 셀로 이동: 이 옵션을 선택하면 셀을 실행하고 다음 셀로 더 빠르게 이동할 수 있습니다.

    • Mac 키보드의 경우 Shift + Return 을 누르거나 Windows 키보드의 경우 Shift + Enter 를 누릅니다.

    • 셀에 대한 세로 줄임표(추가 작업)를 선택하고 Run cell and advance 를 선택합니다.

  • 위의 모든 항목 실행: 이전 셀의 결과를 참조하는 셀을 실행할 때 이 옵션을 선택합니다.

    • 셀에 대한 세로 줄임표(추가 작업)를 선택하고 Run all above 를 선택합니다.

  • 아래의 모든 항목 실행: 이후 셀이 종속된 셀을 실행할 때 이 옵션을 선택합니다. 이 옵션은 현재 셀과 그 이후의 모든 셀을 실행합니다.

    • 셀에 대한 세로 줄임표(추가 작업)를 선택하고 Run all below 를 선택합니다.

하나의 셀이 실행 중일 때 다른 실행 요청은 큐에 추가되고, 실제로 실행 중인 셀이 완료되면 실행됩니다.

셀 상태 검사

셀 실행 상태는 셀에 표시되는 색상을 통해 표시됩니다. 이 상태 색상은 셀의 왼쪽 벽과 오른쪽 셀 탐색 맵의 두 곳에 표시됩니다.

셀 상태 색상:

  • 파란색 점 - 셀이 수정되었지만 아직 실행되지 않았음을 나타냅니다.

  • 빨간색 - 오류가 발생했습니다.

  • 녹색 - 실행이 성공했습니다.

  • 녹색으로 이동 - 셀이 현재 실행 중입니다.

  • 회색으로 깜박임 - 셀의 실행을 대기 중입니다. 이 상태는 여러 셀이 실행되도록 트리거될 때 발생합니다.

참고

마크다운 셀에는 어떤 상태도 표시되지 않습니다.

셀 실행이 완료되면, 셀 상단에 실행에 소요된 시간이 표시됩니다. 이 텍스트를 선택하면 실행 세부 정보 창이 표시됩니다. 실행 시작 및 종료 시간, 총 경과 시간을 포함한 실행 세부 정보를 볼 수 있습니다.

SQL 셀에는 쿼리 실행에 사용된 웨어하우스, 반환된 행, 쿼리 ID 페이지로 연결되는 하이퍼링크 등의 추가 정보가 포함되어 있습니다.

셀 실행 세부 정보 창.

실행 중 셀 중지

현재 실행 중인 코드 셀의 실행을 중지하려면 셀의 오른쪽 상단에 있는 중지 버튼을 선택합니다.

이렇게 하면 현재 실행 중인 셀과 실행되도록 예약된 모든 후속 셀의 실행이 중지됩니다.

마크다운으로 텍스트 서식 지정

노트북에 마크다운을 포함하려면 마크다운 셀을 추가합니다.

  1. 키보드 단축키 를 사용하여 Markdown 을 선택하거나 + Markdown 을 선택합니다.

  2. Edit markdown 연필 아이콘을 선택하거나 셀을 두 번 클릭하고 마크다운 작성을 시작합니다.

유효한 마크다운을 입력하여 텍스트 셀을 서식 지정할 수 있습니다. 입력하면 서식이 지정된 텍스트가 마크다운 구문 아래에 나타납니다.

H1 헤더에 #이 표시된 마크다운 텍스트와 예제 마크다운 셀의 헤더, 'This is an example Markdown cell in a Snowflake Notebook'이라는 본문 텍스트가 표시된 마크다운 셀의 스크린샷입니다. 원시 마크다운 내용 아래에 렌더링된 마크다운이 다른 글꼴로 표시됩니다.

서식이 지정된 텍스트만 보려면 Done editing 체크 표시 아이콘을 선택합니다.

렌더링된 마크다운만 표시된 마크다운 셀의 스크린샷: 예시 마크다운 셀의 헤더와 'This is an example Markdown cell in a Snowflake Notebook'의 본문 텍스트.

참고

마크다운 셀은 현재 HTML 렌더링을 지원하지 않습니다.

마크다운 기본 사항

이 섹션에서는 시작하는 데 도움이 되는 기본 마크다운 구문을 설명합니다.

헤더

헤딩 수준

마크다운 구문

1단계 수준

# Top-level Header
Copy
마크다운의 헤더 1

2단계 수준

## 2nd-level Header
Copy
마크다운의 헤더 1

3단계 수준

### 3rd-level Header
Copy
마크다운의 헤더 1

인라인 텍스트 서식

텍스트 형식

마크다운 구문

이탤릭체

*italicized text*
Copy
마크다운에서 기울임체로 표시된 텍스트

굵게

**bolded text**
Copy
마크다운의 굵게 표시된 텍스트

링크

[Link text](url)
Copy
마크다운의 링크

목록

목록 유형

마크다운 구문

정렬된 목록

1. first item
2. second item
  1. Nested first
  2. Nested second
Copy
마크다운의 정렬된 목록

순서 없는 목록

- first item
- second item
  - Nested first
  - Nested second
Copy
마크다운의 순서 없는 목록

코드 서식

언어

마크다운 구문

Python

```python
import pandas as pd
df = pd.DataFrame([1,2,3])
```
Copy
마크다운의 Python 코드 조각

SQL

```sql
SELECT * FROM MYTABLE
```
Copy
마크다운의 SQL 코드 조각

이미지 삽입

파일 유형

마크다운 구문

이미지

![<alt_text>](<path_to_image>)
Copy
마크다운에 삽입된 이미지

이러한 Markdown 예제를 보여주는 노트북은 시각적 데이터 스토리 노트북의 Markdown 셀 섹션을 참조하십시오.

셀 출력 이해하기

Python 셀을 실행하면 다음과 같은 유형의 셀 출력이 결과에 표시됩니다.

  • print(), 로그, 오류, 경고 등 콘솔에 기록된 모든 결과.

  • Streamlit의 대화형 테이블 디스플레이, st.dataframe() 로 데이터 프레임이 자동으로 인쇄됩니다.

    • 지원되는 데이터프레임 표시 유형에는 pandas DataFrame, Snowpark DataFrames 및 Snowpark Tables가 있습니다.

    • Snowpark의 경우, 인쇄된 데이터프레임은 .show() 를 호출할 필요 없이 바로 평가됩니다. 예를 들어, 노트북을 비대화형 모드로 실행할 때와 같이 데이터프레임을 즉시 평가하지 않으려면 Snowflake는 Snowpark 코드의 전체 런타임을 가속화하기 위해 데이터프레임 인쇄 명령을 제거하는 것을 권장합니다.

  • 시각화는 출력으로 렌더링됩니다. Snowflake Notebooks 에서 데이터를 시각화하는 방법에 대한 Snowflake Notebooks 에서 데이터 시각화 섹션을 참조하십시오.

또한 Python에서 SQL 쿼리 결과에 액세스할 수 있으며 그 반대의 경우도 마찬가지입니다. Snowflake Notebooks 의 참조 셀 및 변수 섹션을 참조하십시오.

Snowflake Notebooks 의 참조 셀 및 변수

노트북 셀에서 이전 셀 결과를 참조할 수 있습니다. 예를 들어, SQL의 결과 또는 Python 변수의 값을 참조하려면 다음 테이블을 참조하십시오.

참고

참조 셀 이름은 대/소문자를 구분하며 참조된 셀의 이름과 정확하게 일치해야 합니다.

Python 셀의 참조 SQL 출력:

참조 셀 유형

현재 셀 유형

참조 구문

SQL

Python

cell1

SQL 결과 테이블을 Snowpark DataFrame으로 변환합니다.

이름이 cell1 인 SQL 셀에 다음이 있는 경우:

SELECT 'FRIDAY' as SNOWDAY, 0.2 as CHANCE_OF_SNOW
UNION ALL
SELECT 'SATURDAY',0.5
UNION ALL
SELECT 'SUNDAY', 0.9;
Copy

셀을 참조하여 SQL 결과에 액세스할 수 있습니다.

snowpark_df = cell1.to_df()
Copy

결과를 pandas DataFrame으로 변환:

my_df = cell1.to_pandas()
Copy

SQL 코드의 참조 변수:

중요

SQL 코드에서는 string 타입의 Python 변수만 참조할 수 있습니다. Snowpark DataFrame, pandas DataFrame 또는 기타 Python 네이티브 DataFrame 형식은 참조할 수 없습니다.

참조 셀 유형

현재 셀 유형

참조 구문

SQL

SQL

{{cell2}}

예를 들어, 이름이 cell1 인 SQL에서 cell2 의 셀 결과를 참조합니다.

SELECT * FROM {{cell2}} where PRICE > 500
Copy

Python

SQL

{{variable}}

예를 들어, 이름이 cell1 인 Python 셀에서:

c = "USA"
Copy

변수를 참조하여 이름이 cell2 인 SQL 셀에서 변수 c 의 값을 참조할 수 있습니다.

SELECT * FROM my_table WHERE COUNTRY = {{c}}
Copy

노트북 실행을 위한 고려 사항

  • 노트북은 호출자 권한을 사용하여 실행됩니다. 추가 고려 사항은 노트북의 세션 컨텍스트 변경하기 섹션을 참조하십시오.

  • 노트북에서 사용할 Python 라이브러리를 가져올 수 있습니다. 자세한 내용은 노트북에서 사용할 Python 패키지 가져오기 섹션을 참조하십시오.

  • SQL 셀에서 오브젝트를 참조할 때는 지정된 데이터베이스 또는 스키마에서 오브젝트 이름을 참조하는 경우가 아니라면 정규화된 오브젝트 이름을 사용해야 합니다. 노트북의 세션 컨텍스트 변경하기 섹션을 참조하십시오.

  • 노트북 초안은 3초마다 저장됩니다.

  • 1시간 동안 아무런 활동(코드 편집이나 쿼리 실행 없음)이 없으면 노트북 커널이 종료됩니다. Snowflake에서는 웨어하우스의 매개 변수도 확인할 것을 권장합니다. STATEMENT_TIMEOUT_IN_SECONDS 또는 STATEMENT_QUEUED_TIMEOUT_IN_SECONDS 를 작은 값으로 설정하면 노트북이 종료되거나 시작되지 않을 수 있습니다.

  • Git 통합을 사용하면 노트북 버전을 유지 관리할 수 있습니다.

  • 노트북 셀 결과는 세션 전체에 캐시됩니다. 노트북을 다시 열면 UI를 사용해 마지막으로 노트북을 실행했을 때의 과거 결과가 표시됩니다. 캐시된 결과는 노트북을 실행한 동일한 사용자에게만 표시됩니다.

  • BEGIN … END(Snowflake Scripting) 은 SQL 셀에서 지원되지 않습니다. 대신 Python 셀에서 Session.sql().collect() 메서드를 사용하여 스크립팅 블록을 실행합니다. sql 호출을 collect 호출로 연결하여 SQL 쿼리를 즉시 실행합니다.

    다음 코드는 session.sql().collect() 메서드를 사용하여 Snowflake 스크립팅 블록을 실행합니다.

    from snowflake.snowpark.context import get_active_session
    session = get_active_session()
    code_to_run = """
    BEGIN
        CALL TRANSACTION_ANOMALY_MODEL!DETECT_ANOMALIES(
            INPUT_DATA => SYSTEM$REFERENCE('TABLE', 'ANOMALY_INFERENCE'),
            TIMESTAMP_COLNAME =>'DATE',
            TARGET_COLNAME => 'TRANSACTION_AMOUNT',
            CONFIG_OBJECT => {'prediction_interval': 0.95}
        );
    
        LET x := SQLID;
        CREATE TABLE ANOMALY_PREDICTIONS AS SELECT * FROM TABLE(RESULT_SCAN(:x));
    END;
    """
    data = session.sql(code_to_run).collect(block=True);
    
    Copy

다음 단계