EXECUTE NOTEBOOK PROJECT¶
在 Notebooks 编辑器之外执行笔记本项目中存储的笔记本。该命令以非交互式(无界面)模式运行笔记本,并可从以下位置执行:
工作表或 SQL 文件。
其他 Snowflake 可执行对象(任务)。
可发出 SQL 的外部编排工具(例如 Airflow、Prefect、Dagster 以及 CI/CD 系统)。
该命令会使用您配置的运行时、计算池、仓库以及外部访问集成来运行您指定为 MAIN_FILE 的笔记本文件。在容器运行时中运行的笔记本会在计算池上执行,而 SQL/Snowpark 查询则在仓库上执行。
语法¶
EXECUTE NOTEBOOK PROJECT <database_name>.<schema_name>.<project_name>
[ MAIN_FILE = '<notebook_file_name>.ipynb' ]
[ COMPUTE_POOL = '<compute_pool_name>' ]
[ RUNTIME = '<runtime_version>' ] -- e.g., 'V2.2-CPU-PY3.12'
[ QUERY_WAREHOUSE = '<warehouse_name>' ]
[ EXTERNAL_ACCESS_INTEGRATIONS = ('<integration_name>' [ , ... ]) ];
必填参数¶
database_name.schema_name.project_name要执行的笔记本项目的完全限定标识符。
必须引用一个已存在的笔记本项目,该项目需通过 CREATE NOTEBOOK PROJECT 创建。
除非该项目位于当前的 DATABASE 和 SCHEMA 中,否则必须使用完全限定名称。
有关更多信息,请参阅 标识符要求。
可选参数¶
根据项目及运行时的具体配置情况,实际使用中可能需要其中的部分参数。以下说明介绍了这些参数的用途及其常见使用方式。
MAIN_FILE = 'notebook_file_name.ipynb'指定要执行的工作区中的主笔记本文件(例如
'main.ipynb')。必须是一个
.ipynb笔记本文件,且位于该项目所引用的工作区中。该路径为相对于工作区根目录的相对路径。
COMPUTE_POOL = 'compute_pool_name'指定在容器运行时中执行笔记本时所使用的计算池。
当笔记本运行时使用 Snowpark Container Services 时,此参数为必填项。
RUNTIME = 'runtime_version'指定用于执行笔记本的运行时镜像/版本(例如
'V2.2-CPU-PY3.12')。决定笔记本执行时使用的 Python 版本及其执行环境。
对应一个容器运行时镜像(CPU 或 GPU),或一个仓库运行时变体。
QUERY_WAREHOUSE = 'warehouse_name'指定用于执行 SQL 以及来自笔记本的 Snowpark 查询的虚拟仓库。
如果笔记本执行 SQL 或 Snowpark 操作,且未通过其他方式配置仓库,则此参数为必填项。
在使用容器运行时时,查询下推由仓库处理,而 Python 代码在计算池上执行。
EXTERNAL_ACCESS_INTEGRATIONS = ( integration_name [ , ... ] )指定笔记本在执行过程中可以使用的一个或多个外部访问集成。
当笔记本需要进行出站网络调用时(例如访问外部 APIs),该参数为必填项。
每个集成名称都必须指向一个已存在的外部访问集成。
可以在括号中使用逗号分隔的列表形式指定多个外部访问集成。
示例:
EXTERNAL_ACCESS_INTEGRATIONS = ('http_eai', 's3_eai');
访问控制要求¶
执行 EXECUTE NOTEBOOK PROJECT 的角色必须对该笔记本项目拥有足够的权限。
此外,执行角色还必须对以下对象拥有 USAGE/OWNERSHIP 权限:
查询仓库。
计算池。
包含该笔记本项目的数据库和架构。
命令中引用的任务以及外部访问集成。
有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色。
使用说明¶
您可以在任务中调用 EXECUTE NOTEBOOK PROJECT,从而将笔记本运行纳入更大的工作流中。
当您使用 EXECUTE NOTEBOOK PROJECT 命令运行笔记本时:
笔记本代码会在 COMPUTE_POOL 参数指定的计算池上执行,并使用 RUNTIME 参数指定的运行时。
SQL 以及 Snowpark 查询将使用 QUERY_WAREHOUSE 参数指定的虚拟仓库执行。
示例¶
使用所有参数执行笔记本项目:
EXECUTE NOTEBOOK PROJECT "sales_detection_db"."schema"."DEFAULT_PROJ_B32BCFD4"
MAIN_FILE = 'notebook_file.ipynb'
COMPUTE_POOL = 'test_X_CPU'
RUNTIME = 'V2.2-CPU-PY3.10'
QUERY_WAREHOUSE = 'ENG_INFRA_WH'
EXTERNAL_ACCESS_INTEGRATIONS = ('test_EAI');
仅使用仓库执行笔记本项目:
EXECUTE NOTEBOOK PROJECT analytics_db.workflow_schema.workflow_proj
MAIN_FILE = 'jobs/nightly_etl.ipynb'
QUERY_WAREHOUSE = 'ETL_WH';