计划数据导入作业(预览)

适用范围:Azure CLI ml 扩展 v2(最新版)Python SDK azure-ai-ml v2(最新版)

本文介绍如何使用计划 UI 以编程方式计划数据导入。 可以基于运行时间创建计划。 基于时间的计划可以处理例程任务,例如定期进行数据导入以使其保持最新状态。 了解如何创建计划后,你将了解如何通过 CLI、SDK 和工作室 UI 资源来检索、更新和停用这些计划。

先决条件

计划数据导入

要定期导入数据,必须创建计划。 Schedule 将数据导入操作与触发器相关联。 触发器可以是 cron,用于使用 cron 表达式来描述运行之间的延迟;也可以是 recurrence,用于指定触发作业的频率。 无论是哪种情况,都必须首先生成导入数据定义。 现有数据导入或内联定义的数据导入对此有效。 有关详细信息,请访问在 CLI、SDK 和 UI 中创建数据导入

创建计划

使用定期模式创建基于时间的计划

适用于:Azure CLI ml 扩展 v2(当前)

YAML:使用定期模式的数据导入计划

$schema: https://azuremlschemas.azureedge.net/latest/schedule.schema.json
name: simple_recurrence_import_schedule
display_name: Simple recurrence import schedule
description: a simple hourly recurrence import schedule

trigger:
  type: recurrence
  frequency: day #can be minute, hour, day, week, month
  interval: 1 #every day
  schedule:
    hours: [4,5,10,11,12]
    minutes: [0,30]
  start_time: "2022-07-10T10:00:00" # optional - default will be schedule creation time
  time_zone: "Pacific Standard Time" # optional - default will be UTC

import_data: ./my-snowflake-import-data.yaml

YAML:与托管数据存储上定期模式内联的数据导入定义计划

$schema: https://azuremlschemas.azureedge.net/latest/schedule.schema.json
name: inline_recurrence_import_schedule
display_name: Inline recurrence import schedule
description: an inline hourly recurrence import schedule

trigger:
  type: recurrence
  frequency: day #can be minute, hour, day, week, month
  interval: 1 #every day
  schedule:
    hours: [4,5,10,11,12]
    minutes: [0,30]
  start_time: "2022-07-10T10:00:00" # optional - default will be schedule creation time
  time_zone: "Pacific Standard Time" # optional - default will be UTC

import_data:
  type: mltable
  name: my_snowflake_ds
  path: azureml://datastores/workspacemanagedstore
  source:
    type: database
    query: select * from TPCH_SF1.REGION
    connection: azureml:my_snowflake_connection

trigger 包含以下属性:

  • (必需)type 指定计划类型,值为 recurrencecron 以下部分包含详细信息。

接下来,在 CLI 中运行以下命令:

> az ml schedule create -f <file-name>.yml

注意

这些属性适用于 CLI 和 SDK:

  • (必需)frequency 指定描述计划触发频率的时间单位。 可以具有值

    • minute
    • hour
    • day
    • week
    • month
  • (必需)interval 指定计划触发频率,即计划再次触发之前需等待的时间单位数。

  • (可选)schedule 定义定期模式,包含 hoursminutesweekdays

    • frequency 等于 day 时,模式可以指定 hoursminutes
    • frequency 等于 weekmonth 时,模式可以指定 hoursminutesweekdays
    • hours 应为整数或列表,范围介于 0 和 23 之间。
    • minutes 应为整数或列表,范围介于 0 和 59 之间。
    • weekdays 是介于 mondaysunday 之间的字符串或列表。
    • 如果省略 schedule,则将根据 start_timefrequencyinterval 的逻辑触发作业。
  • (可选)start_time 使用时区说明开始日期和时间。 如果省略 start_time,则 start_time 等于作业创建时间。 如果开始时间在过去,则第一个作业将在下一个计算的运行时间运行。

  • (可选)end_time 使用时区描述结束日期和时间。 如果省略 end_time,则在手动禁用计划之前,计划会继续触发作业。

  • (可选)time_zone 指定定期的时区。 如果省略,则默认时区为 UTC。 有关时区值的详细信息,请访问时区值附录

使用 cron 表达式创建基于时间的计划

YAML:使用 cron 表达式计划数据导入

适用于:Azure CLI ml 扩展 v2(当前)

YAML:使用 cron 表达式(预览版)计划数据导入

$schema: https://azuremlschemas.azureedge.net/latest/schedule.schema.json
name: simple_cron_import_schedule
display_name: Simple cron import schedule
description: a simple hourly cron import schedule

trigger:
  type: cron
  expression: "0 * * * *"
  start_time: "2022-07-10T10:00:00" # optional - default will be schedule creation time
  time_zone: "Pacific Standard Time" # optional - default will be UTC

import_data: ./my-snowflake-import-data.yaml

YAML:计划与 cron 表达式(预览版)内联的数据导入定义

$schema: https://azuremlschemas.azureedge.net/latest/schedule.schema.json
name: inline_cron_import_schedule
display_name: Inline cron import schedule
description: an inline hourly cron import schedule

trigger:
  type: cron
  expression: "0 * * * *"
  start_time: "2022-07-10T10:00:00" # optional - default will be schedule creation time
  time_zone: "Pacific Standard Time" # optional - default will be UTC

import_data:
  type: mltable
  name: my_snowflake_ds
  path: azureml://datastores/workspaceblobstore/paths/snowflake/${{name}}
  source:
    type: database
    query: select * from TPCH_SF1.REGION
    connection: azureml:my_snowflake_connection

trigger 部分定义计划详细信息,并包含以下属性:

  • (必需)type 将指定 cron 计划类型。
> az ml schedule create -f <file-name>.yml

列表将在此处继续:

  • (必需)expression 使用标准 crontab 表达式来表达定期计划。 单个表达式由 5 个空格分隔的字段组成:

    MINUTES HOURS DAYS MONTHS DAYS-OF-WEEK

    • 单个通配符 (*) 涵盖字段的所有值。 *(以日为单位)表示一个月中的全部天数(因月份和年份而异)。

    • 上例中的 expression: "15 16 * * 1" 表示每周一下午 16:15。

    • 下表列出了每个字段的有效值:

      字段 范围 注释
      MINUTES 0-59 -
      HOURS 0-23 -
      DAYS - 不支持。 该值将被忽略并视为 *
      MONTHS - 不支持。 该值将被忽略并视为 *
      DAYS-OF-WEEK 0-6 零 (0) 表示星期日。 也接受天的名称。
    • 有关 crontab 表达式的详细信息,请访问 GitHub 上的 Crontab 表达式 wiki 资源

    重要

    不支持 DAYSMONTH。 如果传递这些值其中之一,则会将其忽略并视为 *

  • (可选)start_time 使用计划的时区指定开始日期和时间。 例如,start_time: "2022-05-10T10:15:00-04:00" 表示计划开始于 UTC-4 时区 2022-05-10 上午 10:15:00。 如果省略 start_time,则 start_time 等于计划创建时间。 如果开始时间在过去,则第一个作业将在下一个计算的运行时间运行。

  • (可选)end_time 使用时区描述结束日期和时间。 如果省略 end_time,则在手动禁用计划之前,计划会继续触发作业。

  • (可选)time_zone 指定表达式的时区。 如果省略 time_zone,则时区默认为 UTC。 有关时区值的详细信息,请访问时区值附录

的限制:

  • 目前,Azure 机器学习 v2 计划不支持基于事件的触发器。
  • 使用 Azure 机器学习 SDK/CLI v2 指定包含多个触发器时间戳的复杂定期模式。 UI 仅显示复杂模式,且不支持编辑。
  • 如果将重复周期设置为每月的第 31 天,则计划在少于 31 天的月份里不会触发作业。

列出工作区中的计划

适用于:Azure CLI ml 扩展 v2(当前)

az ml schedule list

检查计划详细信息

适用于:Azure CLI ml 扩展 v2(当前)

az ml schedule show -n simple_cron_data_import_schedule

更新计划

适用于:Azure CLI ml 扩展 v2(当前)

az ml schedule update -n simple_cron_data_import_schedule  --set description="new description" --no-wait

注意

若要除标记/说明外更新更多内容,建议使用 az ml schedule create --file update_schedule.yml

禁用计划

适用于:Azure CLI ml 扩展 v2(当前)

az ml schedule disable -n simple_cron_data_import_schedule --no-wait

启用计划

适用于:Azure CLI ml 扩展 v2(当前)

az ml schedule enable -n simple_cron_data_import_schedule --no-wait

删除计划

重要

在删除之前,必须禁用计划。 删除是永久的、不可恢复的操作。 删除某个计划后,永远无法访问或恢复它。

适用于:Azure CLI ml 扩展 v2(当前)

az ml schedule delete -n simple_cron_data_import_schedule

RBAC(基于角色的访问控制)支持

计划通常用于生产。 为了防止出现问题,工作区管理员可能需要在工作区中限制计划创建和管理权限。

目前存在三个与计划相关的操作规则,你可以在 Azure 门户中配置它们。 有关详细信息,请访问如何管理对 Azure 机器学习工作区的访问权限。

操作 说明 规则
读取 获取和列出机器学习工作区中的计划 Microsoft.MachineLearningServices/workspaces/schedules/read
写入 在机器学习工作区中创建、更新、禁用和启用计划 Microsoft.MachineLearningServices/workspaces/schedules/write
删除 在机器学习工作区中删除计划 Microsoft.MachineLearningServices/workspaces/schedules/delete

后续步骤