计划数据导入作业(预览)
适用范围:Azure CLI ml 扩展 v2(最新版)Python SDK azure-ai-ml v2(最新版)
本文介绍如何使用计划 UI 以编程方式计划数据导入。 可以基于运行时间创建计划。 基于时间的计划可以处理例程任务,例如定期进行数据导入以使其保持最新状态。 了解如何创建计划后,你将了解如何通过 CLI、SDK 和工作室 UI 资源来检索、更新和停用这些计划。
先决条件
- 你需要具有 Azure 订阅才能使用 Azure 机器学习。 如果没有 Azure 订阅,可在开始前创建一个试用帐户。 立即试用免费版或付费版 Azure 机器学习。
安装 Azure CLI 和
ml
扩展。 按照安装、设置和使用 CLI (v2)中的安装步骤执行操作。创建 Azure 机器学习工作区(如果没有)。 有关工作区的创建,请参阅安装、设置和使用 CLI (v2)。
计划数据导入
要定期导入数据,必须创建计划。 Schedule
将数据导入操作与触发器相关联。 触发器可以是 cron
,用于使用 cron 表达式来描述运行之间的延迟;也可以是 recurrence
,用于指定触发作业的频率。 无论是哪种情况,都必须首先生成导入数据定义。 现有数据导入或内联定义的数据导入对此有效。 有关详细信息,请访问在 CLI、SDK 和 UI 中创建数据导入。
创建计划
使用定期模式创建基于时间的计划
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
指定计划类型,值为recurrence
或cron
。 以下部分包含详细信息。
接下来,在 CLI 中运行以下命令:
> az ml schedule create -f <file-name>.yml
注意
这些属性适用于 CLI 和 SDK:
(必需)
frequency
指定描述计划触发频率的时间单位。 可以具有值minute
hour
day
week
month
(必需)
interval
指定计划触发频率,即计划再次触发之前需等待的时间单位数。(可选)
schedule
定义定期模式,包含hours
、minutes
和weekdays
。- 当
frequency
等于day
时,模式可以指定hours
和minutes
。 - 当
frequency
等于week
和month
时,模式可以指定hours
、minutes
和weekdays
。 hours
应为整数或列表,范围介于 0 和 23 之间。minutes
应为整数或列表,范围介于 0 和 59 之间。weekdays
是介于monday
和sunday
之间的字符串或列表。- 如果省略
schedule
,则将根据start_time
、frequency
和interval
的逻辑触发作业。
- 当
(可选)
start_time
使用时区说明开始日期和时间。 如果省略start_time
,则 start_time 等于作业创建时间。 如果开始时间在过去,则第一个作业将在下一个计算的运行时间运行。(可选)
end_time
使用时区描述结束日期和时间。 如果省略end_time
,则在手动禁用计划之前,计划会继续触发作业。(可选)
time_zone
指定定期的时区。 如果省略,则默认时区为 UTC。 有关时区值的详细信息,请访问时区值附录。
使用 cron 表达式创建基于时间的计划
YAML:使用 cron 表达式计划数据导入
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 资源。
重要
不支持
DAYS
和MONTH
。 如果传递这些值其中之一,则会将其忽略并视为*
。(可选)
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 天的月份里不会触发作业。
列出工作区中的计划
az ml schedule list
检查计划详细信息
az ml schedule show -n simple_cron_data_import_schedule
更新计划
az ml schedule update -n simple_cron_data_import_schedule --set description="new description" --no-wait
注意
若要除标记/说明外更新更多内容,建议使用 az ml schedule create --file update_schedule.yml
禁用计划
az ml schedule disable -n simple_cron_data_import_schedule --no-wait
启用计划
az ml schedule enable -n simple_cron_data_import_schedule --no-wait
删除计划
重要
在删除之前,必须禁用计划。 删除是永久的、不可恢复的操作。 删除某个计划后,永远无法访问或恢复它。
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 |
后续步骤
- 详细了解 CLI (v2) 数据导入计划 YAML 架构。
- 了解如何管理导入的数据资产。