安排笔记本运行

当您创建运行笔记本的时间表时,Snowsight 会创建一个任务以按该计划运行笔记本。Snowsight 以非交互模式从上到下逐个单元格执行笔记本。用于运行笔记本的任务归笔记本所有者角色所有,并使用笔记本仓库来运行。默认情况下,笔记本的任务在 10 次失败后自动暂停。有关任务的详细信息,请参阅 任务简介

每次运行笔记本都会启动笔记本并将其与笔记本仓库连接起来。因此,笔记本使用的仓库将恢复并保持活动状态,直到计划任务完成 15 分钟后为止。

按计划运行笔记本所需的权限

由于按计划运行笔记本的过程会创建和执行任务,因此您必须使用具有以下权限的角色:

权限

对象

EXECUTE TASK

账户

USAGE

包含笔记本的数据库

USAGE、CREATE TASK

包含笔记本的架构

计划您的笔记本

要计划笔记本的运行,请通过执行以下操作来创建任务:

  1. In the navigation menu, select Projects » Notebooks.

  2. 找到并选择要计划的笔记本。

  3. 在笔记本中选择计划按钮,然后 Create schedule

    右上角的计划按钮。

    随即出现 Schedule a notebook run 对话框。

  4. 对于 Schedule name,输入笔记本计划的名称。它用作运行笔记本的任务的名称。

  5. 对于 Frequency,选择运行笔记本的频率(例如,Daily)。

  6. 根据您选择的频率,调整 Scheduled time 和其他选项以匹配您希望笔记本运行的时间。

  7. 或者 Parameter,您可以添加命令行语法参数以传递给预定笔记本。例如:key1=value1 key2=value2 --option2

    备注

    如果您将 ``--``(两个短划线)作为独立参数传递,则在破折号之前传递的任何参数都将被解释为传递给笔记本运行时。

  8. 查看计划的预览,然后选择 Create

创建了一项任务,用于计划笔记本的运行。

管理笔记本计划

为笔记本创建计划后,您可以通过笔记本所在架构的任务列表查看和编辑计划。

  1. In the navigation menu, select Projects » Notebooks.

  2. 找到并选择要管理计划的笔记本。

  3. 在笔记本中选择计划按钮,然后 View schedules。这将显示笔记本所在架构中包含的所有任务的表。

  4. 在运行笔记本的任务上使用垂直省略号 工作表的更多操作 菜单并选择一个操作。

您可以进行编辑,例如更改计划的时间或频率,以及完全暂停或删除任务。有关管理任务的更多详情,请参阅 任务简介

将实参传递给计划的笔记本

您可以使用 key1=value1 key2=value2 --option2 等语法将命令行实参传递给计划的笔记本。然后,您可以使用笔记本内的 sys.argv 访问计划笔记本内的这些参数。

# first argument
sys.argv[0]

# print the entire list
st.write(sys.argv)
Copy

查看过去的笔记本计划运行时间

笔记本按计划运行后,您可以查看其运行历史记录:

  1. In the navigation menu, select Projects » Notebooks.

  2. 找到并选择要计划的笔记本。

  3. 在笔记本中选择计划按钮,然后 View run history

    将出现笔记本的 Run History 对话框。

  4. 您可以查看笔记本的运行历史记录,包括计划任务生成的运行活动或 API。不包括用户运行的笔记本。您还可以查看以下详细信息:

    • Trigger:导致笔记本运行的任务的名称。

    • Last Ran:上次计划运行笔记本的时间戳。

    • Status:已运行任务的状态。

    • Duration:运行笔记本所花费的时间长度。

    • Results:指向笔记本运行结果的链接。结果是只读的,笔记本单元格无法编辑。您可以选择 Edit current notebook 打开和编辑笔记本的当前版本。

  5. (可选)选择 View all tasks in schema 查看架构中包含的所有任务的表。

  6. 选择 Done 返回您的笔记本。

有关查看任务历史记录的更多信息,请参阅 View the task history for your account

使用您自己的计划

要使用自己的计划工具(例如 Airflow)来运行笔记本,请使用 EXECUTE NOTEBOOK 命令。您也可以在运行此命令时直接将命令行实参传递给计划的笔记本。例如:

EXECUTE NOTEBOOK DB.SCHEMA.NOTEBOOK_NAME('--env staging --tablename staging-table');
Copy

这会从上到下逐个单元格执行笔记本。可在笔记本的运行历史记录部分中查看结果。

限制

  • 您的计划笔记本的运行历史记录仅限于最近七天。

  • 更改作为计划任务运行的笔记本电脑的名称可能会导致任务出错。您可以使用 CREATE TASK 命令手动编辑任务,使用更改后的名称调用笔记本。

  • 不支持嵌套执行 SPCS 笔记本。计划的 SPCS 笔记本无法在其代码中运行其他 SPCS 笔记本。

  • 任务的所有者角色必须与笔记本的所有者角色相匹配。计划运行不支持次要角色,但您可以切换到已授予任务所有者角色的角色。例如,在大多数情况下,您可以切换到 PUBLIC 角色:

    from snowflake.snowpark.context import get_active_session
    session = get_active_session()
    session.use_role('PUBLIC')
    
    Copy

笔记本运行失败

  • 如果计划的笔记本运行导致错误,该运行将显示在运行历史记录中,且状态为 Failed。创建笔记本的用户可以打开失败的运行并隔离发生错误的单元格。