CREATE ALERT¶
在当前架构中创建新 警报。
此命令还支持以下变体:
- CREATE ALERT ...CLONE (创建现有警报的克隆) 
小技巧
除了 SQL,您还可以使用其他接口,如 Snowflake REST APIs、Snowflake Python APIs 和 Snowflake CLI。请参阅 备用接口。
重要
新创建或克隆的警报在创建时将暂停。有关恢复挂起警报的信息,请参阅 暂停和恢复警报。
语法¶
CREATE [ OR REPLACE ] ALERT [ IF NOT EXISTS ] <name>
  [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
  [ SCHEDULE = '{ <num> MINUTE | USING CRON <expr> <time_zone> }' ]
  [ WAREHOUSE = <warehouse_name> ]
  [ COMMENT = '<string_literal>' ]
  IF( EXISTS(
    <condition>
  ))
  THEN
    <action>
变体语法¶
CREATE ALERT ...CLONE
使用相同的参数值创建新警报:
CREATE [ OR REPLACE ] ALERT <name> CLONE <source_alert> [ ... ]
有关更多详细信息,请参阅 CREATE <object> ... CLONE。
备注
使用 CREATE ALERT <name> CLONE 或克隆包含警报的架构或数据库克隆警报时,新警报具有原始警报的所有属性,但显式覆盖的任何属性除外。
必填参数¶
- name
- 字符串,用于指定警报的标识符(即名称),对于创建警报的架构必须是唯一的。 - 此外,标识符必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如, - "My object")。放在双引号内的标识符也区分大小写。- 有关更多详细信息,请参阅 标识符要求。 
- TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )
- 指定 标签 名称和标签字符串值。 - 标签值始终为字符串,标签值的最大字符数为 256。 - 有关在语句中指定标签的信息,请参阅 对象的标签配额。 
- IF( EXISTS( condition ))
- 表示警报条件的 SQL 语句。您可以使用以下命令: - 如果语句返回一行或多行,则执行警报操作。 
- THEN action
- 如果条件返回一行或多行,则应执行的 SQL 语句。 - 要发送通知,您可以 调用 SYSTEM$SEND_EMAIL 或 SYSTEM$SEND_SNOWFLAKE_NOTIFICATION 存储过程。 
可选参数¶
- WAREHOUSE = warehouse_name
- 指定为执行此警报提供计算资源的虚拟仓库。 - 备注 - 对于 无服务器警报,请勿设置此属性。 
- SCHEDULE ...
- 指定定期评估警报条件的计划。 - 创建警报时,省略此参数或将其设置为 NULL 会创建 新数据警报。 - 对于计划警报,您可以用以下方法之一指定计划: - USING CRON expr time_zone- 指定用于定期评估警报条件的 Cron 表达式和时区。支持标准 cron 实用程序语法的子集。 - cron 表达式由以下字段组成: - # __________ minute (0-59) # | ________ hour (0-23) # | | ______ day of month (1-31, or L) # | | | ____ month (1-12, JAN-DEC) # | | | | _ day of week (0-6, SUN-SAT, or L) # | | | | | # | | | | | * * * * * - 支持以下特殊字符: - 特殊字符 - 描述 - *- 通配符。为给定字段指定警报时,警报将在该字段的每个时间单位运行。 - 例如,月份字段中的 - *指定警报每月运行一次。- L- 代表“last”。在星期几字段中使用时,它允许您指定结构,例如给定月份的“最后一个星期五”(“5L”)。在日期字段中,它指定该月的最后一天。 - /n- 指示给定时间单位的第 - n个实例。每个时间量子都是独立计算的。- 例如,如果在月份字段中指定 - 4/3,则条件评估计划为 4 月、7 月和 10 月(即每 3 个月一次,从一年中的第 4 个月开始)。- 在随后的几年中保持相同的计划。也就是说,条件不会计划在 1 月(10 月运行后 3 个月)评估。 - 备注 - cron 表达式当前仅根据指定的时区进行计算。更改账户的 TIMEZONE 参数值(或在用户或会话级别设置该值) :emph:` 不会 ` 更改警报的时区。 
- Cron 表达式定义用于评估警报条件的所有 有效 时间。Snowflake 尝试基于此计划评估条件;但是,如果在下一个有效运行时间开始之前未完成上一次运行,则跳过任何有效运行时间。 
- 当 Cron 表达式中同时包含一个月中的特定某一天和一周中的某一天时,条件评估将安排在满足该月中的某一天 或 一周中的某一天的日期。例如, - SCHEDULE = 'USING CRON 0 0 10-20 * TUE,THU UTC'计划在该月的第 10 天到第 20 天的任何一天以及这些日期之外的任何星期二或星期四的 0AM 进行评估。
 
- num MINUTE- 指定在警报评估之间插入的等待时间间隔(以分钟为单位)。仅接受正整数。 - 还支持 - num M语法。- 为避免歧义,在恢复警报时设置 *基本间隔时间*(使用 ALTER ALERT ...RESUME)。 - 基本间隔时间从当前时钟时间开始间隔计数器。例如,如果使用 - 10 MINUTE创建警报并在 9:03 AM 恢复警报,则在 9:13 AM、9:23 AM 等评估警报的条件。请注意,我们尽最大努力确保绝对精度,但仅保证条件不会在设定的时间间隔发生 之前 评估(例如,在当前示例中,条件可以首先在 9:14 AM 评估,但绝对不会在 9:12 AM 评估)。- 备注 - 支持的最大值为 - 11520(8 天)。具有较大- num MINUTE值的警报永远不会评估其条件。
 
- COMMENT = 'string_literal'
- 指定警报的注释。 
访问控制要求¶
| 权限 | 对象 | 备注 | 
|---|---|---|
| EXECUTE MANAGED ALERT | 账户 | 仅对于 无服务器警报 是必需的。 | 
| EXECUTE ALERT | 账户 | |
| CREATE ALERT | 架构 | |
| USAGE | 仓库 | 仅对于 指定要使用的仓库的警报 是必需的。 | 
要对架构中的任何对象执行操作,需要对父数据库和架构的 USAGE 权限。请注意,如果某个角色获授某个架构的任意权限,该角色便能够解析该架构。例如,若某角色被授予 CREATE 权限,则可以在该架构上创建对象,而无需 同时 被授予该架构的 USAGE 权限。
有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色。
使用说明¶
- 使用授予警报所有者的权限(即对警报具有 OWNERSHIP 权限的角色)执行警报。有关执行警报所需的最低权限列表,请参阅 授予创建警报的权限。 - 若要验证警报所有者角色是否具有执行条件和操作的 SQL 语句所需的权限,建议您先使用警报所有者角色执行这些语句,然后再在 CREATE ALERT 中指定这些语句。 
- 创建警报时,警报默认情况下处于暂停状态。 - 要使警报处于活动状态,您必须执行 ALTER ALERT ...RESUME。 
- 执行 CREATE ALERT 或 ALTER ALERT 时,不会对条件和操作中的语句执行某些验证检查,包括: - 对象标识符的解析。 
- 表达式的数据类型的解析。 
- 对函数调用中实参的数量和类型的验证。 
 - 如果条件或操作的 SQL 语句指定了无效的标识符、不正确的数据类型、不正确的函数实参数量和类型等,则 CREATE ALERT 和 ALTER ALERT 命令不会失败。相反,在执行警报时会发生故障。 - 要检查现有警报中的故障,请使用 ALERT_HISTORY 表函数。 - 要避免这些类型的失败,在指定警报的条件和操作之前,请验证这些条件和操作的 SQL 表达式和语句。 
- 关于元数据: - 注意 - 客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段。 
- The OR REPLACE and IF NOT EXISTS clauses are mutually exclusive. They can't both be used in the same statement. 
- CREATE OR REPLACE <object> 语句是原子的。也就是说,当对象被替换时,旧对象将被删除,新对象将在单个事务中创建。 
示例¶
请参阅 创建警报。
备用接口¶
- Snowflake REST APIs - 创建警报 端点 
 
- Snowflake Python APIs 
- Snowflake CLI - 不支持