使用 SQL 创建 Streamlit 应用程序

注意

此功能适用于 AWS、Microsoft Azure 和 GCP 区域 的账户。不支持 AWS PrivateLinkAzure 专用链接

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

先决条件

在使用 SQL 部署 Streamlit 应用程序之前,应满足以下先决条件:

使用 SQL 创建 Streamlit 应用程序

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

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

本部分介绍如何创建单页面或多页面 Streamlit 应用程序。有关每种应用类型的示例,请参阅 示例 – 单页面 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 频道。

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