使用 SQL 创建和部署 Streamlit 应用程序¶
本主题介绍如何使用 SQL 命令在 Snowflake 中部署 Streamlit 应用程序。它介绍了如何部署单页面和多页面 Streamlit 应用程序。
使用 SQL 创建 Streamlit 应用程序¶
在使用 SQL 创建 Streamlit 应用程序之前,请确保您满足必要的 先决条件。
要使用 SQL 命令在 Snowflake 中创建 Streamlit 应用程序,请执行以下每个任务:
在本地文件系统上创建 Streamlit 文件¶
本部分介绍如何创建单页面或 多页面 Streamlit 应用程序。
在本地文件系统上, ` 创建 Streamlit 主应用程序 <https://docs.streamlit.io/library/get-started/create-an-app (https://docs.streamlit.io/library/get-started/create-an-app)>`_。
可选:如果正在创建 ` 多页面 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 页面添加到此子文件夹。可选:要在 Streamlit 应用程序中包含外部包,请创建一个
environment.yml
文件。有关包含外部包的信息,请参阅 使用 environment.yml 文件来管理包。
创建 Streamlit 页面后,目录结构应类似于:
└── streamlit/
└── environment.yml
└── streamlit_main.py
└── pages/
└── data_frame_demo.py
└── plot_demo.py
备注
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;
创建 STREAMLIT 对象¶
STREAMLIT 对象是 Snowflake 中的数据库对象,它封装了 Streamlit 应用程序所需的文件。
要创建 STREAMLIT 对象,请运行 CREATE STREAMLIT 命令,如下例所示:
CREATE STREAMLIT hello_streamlit ROOT_LOCATION = '@streamlit_db.streamlit_schema.streamlit_stage' MAIN_FILE = 'streamlit_main.py' QUERY_WAREHOUSE = my_warehouse;
此命令根据在 ROOT_LOCATION 和 MAIN_FILE 中指定的路径和文件,创建一个名为
hello_streamlit
的 STREAMLIT 对象。备注
虽然 QUERY_WAREHOUSE 子句是可选的,但必须指定查询仓库才能在 Snowflake 中运行 Streamlit 应用程序。
要验证是否已创建 Streamlit 对象,请运行 SHOW STREAMLITS 命令:
SHOW STREAMLITS;
使用 environment.yml
文件来管理包¶
要在 Streamlit 应用程序中安装其他 Python 包,请执行以下步骤:
在本地文件系统上创建
environment.yml
文件。要将该文件上传到 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
name
和 channels
属性是必需的。此外,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
查看 Streamlit 应用程序¶
要查看有关 STREAMLIT 对象的信息,请运行 DESCRIBE STREAMLIT 命令,如下例所示:
DESC STREAMLIT hello_streamlit;
要在 Snowsight 中查看 Streamlit 应用程序,请参阅 查看 Streamlit 应用程序。
管理 STREAMLIT 对象¶
创建 STREAMLIT 对象后,可使用 ALTER STREAMLIT 命令来修改不同的属性,如以下部分所述。
重命名 STREAMLIT 对象¶
要重命名 STREAMLIT 对象,请使用 ALTER STREAMLIT 命令的 RENAME TO 子句,如下例所示:
ALTER STREAMLIT hello_streamlit RENAME TO hello_snowflake;
更改 STREAMLIT 对象中的暂存区或主文件¶
要更改 STREAMLIT 对象的暂存区的路径,请使用 ALTER STREAMLIT 命令来设置该对象的 ROOT_LOCATION 属性,如下例所示:
ALTER STREAMLIT hello_streamlit SET ROOT_LOCATION = '@snowflake_db.snowflake_schema.snowflake_stage'
要更改 STREAMLIT 对象中的 Streamlit 主文件,请使用 ALTER STREAMLIT 命令来设置该对象的 MAIN_FILE 属性,如下例所示:
ALTER STREAMLIT hello_streamlit SET MAIN_FILE = 'snowflake_main.py'
更改分配给 STREAMLIT 对象的查询仓库¶
要为 STREAMLIT 对象添加查询仓库或更改当前查询仓库,请使用 ALTER STREAMLIT 命令来设置对象的 QUERY_WAREHOUSE 属性,如下例所示:
ALTER STREAMLIT hello_streamlit SET QUERY_WAREHOUSE = my_new_warehouse;
列出可用的 STREAMLIT 对象¶
要列出当前角色可用的 Streamlit 应用程序,请运行 SHOW STREAMLITS 命令,如下例所示:
SHOW STREAMLITS;
删除 STREAMLIT 对象¶
要删除 STREAMLIT 对象,请运行 DROP STREAMLIT 命令,如下例所示:
DROP STREAMLIT hello_streamlit;