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

本主题介绍如何使用 SQL 命令在 Snowflake 中部署 Streamlit 应用程序。从本地开发环境开始,您可以将 Streamlit 应用程序文件复制到 Snowflake 的命名暂存区,并基于这些文件创建 Streamlit 对象。

使用 SQL 创建 Streamlit 应用程序

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

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

可选:在本地文件系统上创建 Streamlit 文件

本部分介绍如何创建一组本地应用程序源文件,并将它们暂存到 Snowflake 中。在下一部分中,如果在创建 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. 可选:要配置部署环境并指定依赖项,请创建一个 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/ 目录或使用 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 对象是 Snowflake 中的数据库对象,它封装了 Streamlit 应用程序所需的文件。

  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

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

    备注

    虽然 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 通道 <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
语言: 中文