使用 SQL 创建和部署 Streamlit 应用程序

本主题介绍如何使用 SQL 命令在 Snowflake 中部署 Streamlit 应用程序。它介绍了如何部署单页面和多页面 Streamlit 应用程序。

使用 SQL 创建 Streamlit 应用程序

在使用 SQL 创建 Streamlit 应用程序之前,请确保您满足必要的 先决条件

要使用 SQL 命令在 Snowflake 中创建 Streamlit 应用程序,请执行以下每个任务:

在本地文件系统上创建 Streamlit 文件

本部分介绍如何创建单页面或 多页面 Streamlit 应用程序。

  1. 在本地文件系统上, ` 创建 Streamlit 主应用程序 <https://docs.streamlit.io/library/get-started/create-an-app (https://docs.streamlit.io/library/get-started/create-an-app)>`_。

  2. 可选:如果正在创建 ` 多页面 Streamlit 应用程序 <https://docs.streamlit.io/library/get-started/multipage-apps/create-a-multipage-app (https://docs.streamlit.io/library/get-started/multipage-apps/create-a-multipage-app)>`_,请在本地文件系统上创建一个名为 pages 的文件夹,然后将其他 Streamlit 页面添加到此子文件夹。

  3. 可选:要在 Streamlit 应用程序中包含外部包,请创建一个 environment.yml 文件。有关包含外部包的信息,请参阅 使用 environment.yml 文件来管理包

创建 Streamlit 页面后,目录结构应类似于:

└── streamlit/
    └── environment.yml
    └── streamlit_main.py
    └── pages/
         └── data_frame_demo.py
         └── plot_demo.py
Copy

备注

environment.yml 文件和可选的 pages 子文件夹必须与 Streamlit 主文件位于同一级别上。任何其他 Streamlit 页面都必须包含在 pages 子文件夹中。

将 Streamlit 文件上传到命名暂存区

要在 Streamlit in Snowflake 内创建 Streamlit 应用程序,必须将应用程序文件上传至命名暂存区。

  • 要上传应用程序文件,请执行以下操作之一:

    • 使用 Snowsight 上传应用程序文件,如 使用 Snowsight 暂存文件 中所述。

    • 使用 SnowSQL 上传应用程序文件,如下例所示:

      PUT file:///<path_to_your_root_folder>/streamlit/streamlit_main.py @streamlit_db.streamlit_schema.streamlit_stage overwrite=true auto_compress=false;
      PUT file:///<path_to_your_root_folder>/streamlit/environment.yml @streamlit_db.streamlit_schema.streamlit_stage overwrite=true auto_compress=false;
      PUT file:///<path_to_your_root_folder>/streamlit/pages/streamlit_page_2.py @streamlit_db.streamlit_schema.streamlit_stage/pages/ overwrite=true auto_compress=false;
      PUT file:///<path_to_your_root_folder>/streamlit/pages/streamlit_page_3.py @streamlit_db.streamlit_schema.streamlit_stage/pages/ overwrite=true auto_compress=false;
      
      Copy

创建 STREAMLIT 对象

STREAMLIT 对象是 Snowflake 中的数据库对象,它封装了 Streamlit 应用程序所需的文件。

  1. 要创建 STREAMLIT 对象,请运行 CREATE STREAMLIT 命令,如下例所示:

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

    此命令根据在 ROOT_LOCATION 和 MAIN_FILE 中指定的路径和文件,创建一个名为 hello_streamlit 的 STREAMLIT 对象。

    备注

    虽然 QUERY_WAREHOUSE 子句是可选的,但必须指定查询仓库才能在 Snowflake 中运行 Streamlit 应用程序。

  2. 要验证是否已创建 Streamlit 对象,请运行 SHOW STREAMLITS 命令:

    SHOW STREAMLITS;
    
    Copy

使用 environment.yml 文件来管理包

要在 Streamlit 应用程序中安装其他 Python 包,请执行以下步骤:

  1. 在本地文件系统上创建 environment.yml 文件。

  2. 要将该文件上传到 STREAMLIT 对象的 ROOT_LOCATION 参数指定的暂存区位置,请运行 PUT 命令。

    environment.yml 中列出的包通过 ` Snowflake Anaconda 通道 <https://repo.anaconda.com/pkgs/snowflake/ (https://repo.anaconda.com/pkgs/snowflake/)>`_ 安装。

以下示例 environment.yml 演示了如何在 Streamlit 环境中安装 scikit-learn

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

namechannels 属性是必需的。此外,channels 属性下需要有 - snowflake 键。

备注

只能安装 ` Snowflake Anaconda 通道 <https://repo.anaconda.com/pkgs/snowflake/ (https://repo.anaconda.com/pkgs/snowflake/)>`_ 中列出的包。Snowflake 中的 Streamlit 不支持外部 Anaconda 频道。

environment.yml 文件中固定 Streamlit 版本

  • 要在 environment.yml 文件中固定 Streamlit 版本,请包含一个 streamlit 依赖项,如下例所示:

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

查看 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
语言: 中文