使用 SQL 创建 Streamlit 应用程序¶
注意
此功能适用于 AWS、Microsoft Azure 和 GCP 区域 的账户。不支持 AWS PrivateLink 和 Azure 专用链接。
本主题介绍如何使用 SQL 命令在 Snowflake 中部署 Streamlit 应用程序。它介绍了如何部署单页面和多页面 Streamlit 应用程序。
先决条件¶
在使用 SQL 部署 Streamlit 应用程序之前,应满足以下先决条件:
确保您的账户具有正确的权限,如 创建和使用 Streamlit 应用程序所需的权限 中所述。
确保可以创建或访问您能在其中上传 Streamlit 应用程序文件的命名暂存区。
使用 SQL 创建 Streamlit 应用程序¶
要使用 SQL 命令在 Snowflake 中创建 Streamlit 应用程序,请执行以下每个任务:
在本地文件系统上创建 Streamlit 文件¶
本部分介绍如何创建单页面或多页面 Streamlit 应用程序。有关每种应用类型的示例,请参阅 示例 – 单页面 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 频道。
查看 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;