SQL을 사용하여 Streamlit 앱 만들기 및 배포하기

이 항목에서는 SQL 명령을 사용하여 Snowflake에 Streamlit 앱을 배포하는 방법을 설명합니다. 로컬 개발 환경에서 시작하여 Streamlit 앱 파일을 Snowflake의 명명된 스테이지로 복사하고 해당 파일에서 Streamlit 오브젝트를 생성할 수 있습니다.

SQL 를 사용하여 Streamlit 앱 만들기

SQL 을 사용하여 Streamlit 앱을 생성하기 전에 필수 전제 조건 이 충족되는지 확인합니다.

SQL 명령을 사용하여 Snowflake에서 Streamlit 앱을 만들려면 다음 각 작업을 수행하십시오.

선택 사항: 개인 키가 암호화된 경우 암호 구문을 설정하려면 개인 키 암호 구문에 대한 환경 변수를 설정합니다. 로컬 파일 시스템에 Streamlit 파일 만들기

이 섹션에서는 앱 소스 파일의 로컬 세트를 생성하고 Snowflake에서 스테이징하는 방법을 설명합니다. 다음 섹션에서는 STREAMLIT 오브젝트를 생성할 때 스테이징된 소스 파일이 없는 경우 기본 소스 파일 세트가 대신 STREAMLIT 오브젝트에 복사됩니다.

  1. 로컬 파일 시스템에서 주 Streamlit 앱을 만듭니다.

  2. 선택 사항: 개인 키가 암호화된 경우 암호 구문을 설정하려면 개인 키 암호 구문에 대한 환경 변수를 설정합니다. 배포 환경을 구성하고 종속성을 지정하려면 environment.yml 파일을 생성합니다.

    이 파일을 포함하지 않으면 앱은 Streamlit in Snowflake 의 지원되는 최신 버전의 Python 및 Streamlit에서 실행됩니다. 앱 종속성에 대한 자세한 내용은 environment.yml 파일을 사용하여 패키지 관리하기 섹션을 참조하세요.

Streamlit 앱을 생성한 후 디렉터리 구조는 다음과 유사한 형태여야 합니다.

project_directory/
├── .streamlit/
│   └── config.toml
├── environment.yml
└── streamlit_app.py
Copy

참고

Streamlit in Snowflake 는 다중 페이지 Streamlit 앱을 지원합니다. 이 예에서는 단일 페이지 앱만 보여주지만, pages/ 디렉터리를 추가하거나 :code:`st.navigation`을 사용하여 다중 페이지 앱을 생성합니다. 다중 페이지 앱에 대해 알아보려면 Streamlit 오픈 소스 설명서의 `다중 페이지 앱 개요 <https://docs.streamlit.io/develop/concepts/multipage-apps/overview>`_ 섹션을 참조하세요.

Streamlit 파일을 명명된 스테이지에 업로드하기

Streamlit in Snowflake 에서 Streamlit 앱을 만들려면 명명된 스테이지에 애플리케이션 파일을 업로드해야 합니다.

  • 애플리케이션 파일을 업로드하려면 다음 중 하나를 수행하십시오.

    • Snowsight를 사용하여 파일 스테이징하기 에 설명된 바와 같이 Snowsight 를 사용하여 애플리케이션 파일을 업로드합니다.

    • 다음 예시와 같이 SnowSQL을 사용하여 애플리케이션 파일을 업로드합니다.

      PUT file:///<path_to_your_project_directory>/streamlit/streamlit_app.py @streamlit_db.streamlit_schema.streamlit_stage overwrite=true auto_compress=false;
      PUT file:///<path_to_your_project_directory>/streamlit/environment.yml @streamlit_db.streamlit_schema.streamlit_stage overwrite=true auto_compress=false;
      PUT file:///<path_to_your_project_directory>/streamlit/.streamlit/config.toml @streamlit_db.streamlit_schema.streamlit_stage/.streamlit/ overwrite=true auto_compress=false;
      
      Copy

STREAMLIT 오브젝트 만들기

STREAMLIT 오브젝트는 Streamlit 앱에 필요한 파일을 캡슐화하는 Snowflake의 데이터베이스 오브젝트입니다.

  1. STREAMLIT 오브젝트를 생성하려면 다음 예와 같이 CREATE STREAMLIT 명령을 실행하십시오.

    CREATE STREAMLIT hello_streamlit
    FROM '@streamlit_db.streamlit_schema.streamlit_stage'
    MAIN_FILE = 'streamlit_app.py'
    QUERY_WAREHOUSE = my_warehouse;
    
    Copy

    이 명령으로 STREAMLIT 및 ``hello_streamlit``에 지정된 경로와 파일을 기반으로 FROM 이라는 MAIN_FILE 오브젝트를 생성합니다.

    참고

    QUERY_WAREHOUSE 절은 선택 사항이지만 Snowflake에서 Streamlit 앱을 실행할 수 있으려면 쿼리 웨어하우스를 지정해야 합니다.

  2. 선택 사항: 개인 키가 암호화된 경우 암호 구문을 설정하려면 개인 키 암호 구문에 대한 환경 변수를 설정합니다. Streamlit 오브젝트가 생성되었는지 확인하려면 SHOW STREAMLITS 명령을 실행합니다.

    SHOW STREAMLITS;
    
    Copy
  3. 앱 초기화를 완료하려면 소유자 역할이 Snowsight 에서 앱을 확인하거나 다음 명령을 실행해야 합니다.

    ALTER STREAMLIT hello_streamlit ADD LIVE VERSION FROM LAST;
    
    Copy

environment.yml 파일을 사용하여 패키지 관리하기

Streamlit 앱에 추가 Python 패키지를 설치하려면 다음을 수행하십시오.

  1. 로컬 파일 시스템에 environment.yml 파일을 생성합니다.

  2. STREAMLIT 오브젝트의 ROOT_LOCATION 매개 변수로 지정된 스테이지 위치에 파일을 업로드하려면 PUT 명령을 실행하십시오.

    environment.yml 에 나열된 패키지는 Snowflake Anaconda 채널 에서 설치됩니다.

다음 샘플 environment.yml 은 Streamlit 환경 내에 scikit-learn 을 설치하는 방법을 보여줍니다.

name: sf_env
channels:
- snowflake
dependencies:
- scikit-learn
Copy

namechannels 속성이 필요합니다. 또한 channels 속성 아래에 - snowflake 키가 필요합니다.

참고

Snowflake Anaconda 채널 에 나열된 패키지만 설치할 수 있습니다. Streamlit in Snowflake는 외부 Anaconda 채널을 지원하지 않습니다.

environment.yml 파일에 Streamlit 버전 고정하기

  • environment.yml 파일에 Streamlit 버전을 고정하려면 다음 예제와 같이 streamlit 종속성을 포함시킵니다.

    name: sf_env
    channels:
    - snowflake
    dependencies:
    - scikit-learn
    - streamlit=1.31.1
    
    Copy

Streamlit 앱 보기

  • STREAMLIT 오브젝트에 대한 정보를 보려면 다음 예와 같이 DESCRIBE STREAMLIT 명령을 실행하십시오.

    DESC STREAMLIT hello_streamlit;
    
    Copy
  • Snowsight 에서 Streamlit 앱을 보려면 Streamlit 앱 보기 섹션을 참조하십시오.

STREAMLIT 오브젝트 관리하기

STREAMLIT 오브젝트를 생성한 후 ALTER STREAMLIT 명령을 사용하여 다음 섹션에 설명된 대로 다양한 속성을 수정합니다.

STREAMLIT 오브젝트 이름 바꾸기

  • STREAMLIT 오브젝트의 이름을 바꾸려면 다음 예와 같이 ALTER STREAMLIT 명령의 RENAME TO 절을 사용하십시오.

    ALTER STREAMLIT hello_streamlit RENAME TO hello_snowflake;
    
    Copy

STREAMLIT 오브젝트의 스테이지 또는 주 파일 변경하기

  • STREAMLIT 오브젝트의 스테이지 경로를 변경하려면 다음 예와 같이 ALTER STREAMLIT 명령을 사용하여 오브젝트의 ROOT_LOCATION 속성을 설정하십시오.

    ALTER STREAMLIT hello_streamlit SET ROOT_LOCATION = '@snowflake_db.snowflake_schema.snowflake_stage'
    
    Copy
  • STREAMLIT 오브젝트의 주 Streamlit 파일을 변경하려면 다음 예와 같이 ALTER STREAMLIT 명령을 사용하여 오브젝트의 MAIN_FILE 속성을 설정하십시오.

    ALTER STREAMLIT hello_streamlit SET MAIN_FILE = 'snowflake_main.py'
    
    Copy

STREAMLIT 오브젝트에 할당된 쿼리 웨어하우스 변경하기

  • 쿼리 웨어하우스를 추가하거나 STREAMLIT 오브젝트에 대한 현재 쿼리 웨어하우스를 변경하려면 다음 예와 같이 ALTER STREAMLIT 명령을 사용하여 오브젝트의 QUERY_WAREHOUSE 속성을 설정하십시오.

    ALTER STREAMLIT hello_streamlit SET QUERY_WAREHOUSE = my_new_warehouse;
    
    Copy

사용 가능한 STREAMLIT 오브젝트 나열하기

  • 현재 역할에서 사용할 수 있는 Streamlit 앱을 나열하려면 다음 예와 같이 SHOW STREAMLITS 명령을 실행하십시오.

    SHOW STREAMLITS;
    
    Copy

STREAMLIT 오브젝트 삭제하기

  • STREAMLIT 오브젝트를 삭제하려면 다음 예와 같이 DROP STREAMLIT 명령을 실행하십시오.

    DROP STREAMLIT hello_streamlit;
    
    Copy