类别:

Information Schema表函数

NOTIFICATION_HISTORY

此表函数可用于查询通过 Snowflake 发送的通知的历史记录。这些通知包括:

返回的行代表:

  • 正在处理的请求。

  • 发送通知的失败尝试次数。

  • 已成功发送的通知。

STATUS 列 表示每一行所代表的含义。请参阅 函数的输出示例

语法

NOTIFICATION_HISTORY(
  [ START_TIME => <constant_expr> ]
  [, END_TIME => <constant_expr> ]
  [, INTEGRATION_NAME => '<string>' ]
  [, RESULT_LIMIT => <integer> ] )
Copy

实参

所有实参均为可选。

START_TIME=> constant_expr. END_TIME=> constant_expr

发出通知的时间范围(格式为 TIMESTAMP_LTZ)。

  • 如果未指定 START_TIME,则范围从 END_TIME 之前的 24 小时开始。

  • 如果未指定 END_TIME,则默认值为 CURRENT_TIMESTAMP

最大时间范围是 14 天。

INTEGRATION_NAME => 'string'

与通知绑定的集成的完全限定名称。如果省略此实参,该函数将返回所有通知。

默认值:空字符串。

RESULT_LIMIT => integer

用于指定函数返回的行数上限的数字。

范围:110000

默认:100

输出

该函数返回以下列:

列名称

数据类型

描述

CREATED

TIMESTAMP_LTZ

创建通知的时间戳。

PROCESSED

TIMESTAMP_LTZ

上次尝试发送通知的时间戳。

MESSAGE_SOURCE

VARCHAR

生成了通知的对象或功能的类型。有效值包括:

  • BUDGET`(适用于 :ref:`预算通知 <label-budgets_notifications>

  • TASK`(适用于 :doc:`任务通知 </user-guide/tasks-errors>)

  • SNOWPIPE`(适用于 :doc:`Snowpipe 通知 </user-guide/data-load-snowpipe-errors>

  • STORED_PROCEDURE`(适用于通过 :doc:`调用 SYSTEM$SEND_EMAIL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION 存储过程 </user-guide/notifications/about-notifications> 发送的电子邮件通知)

INTEGRATION_NAME

VARCHAR

用于此通知的集成 的名称。

STATUS

VARCHAR

通知的状态。有效值为:

  • QUEUED:发送通知的请求正在处理中。

  • SUCCESS:通知已成功发送。

  • RETRIABLE_FAILURE:尝试发送通知失败,系统将尝试再次发送通知。

  • FAILURE:多次尝试发送通知失败,并且不会再尝试发送通知。

ERROR_MESSAGE

VARCHAR

如果通知失败,则提供有关通知失败原因的详细信息。

备注

对于 Webhook 通知,此列包含 HTTP 响应的正文,其中可能包含敏感数据。在使用这些数据之前,请确保对其进行清理。

ID

VARCHAR

发送通知请求的唯一 ID。

如果 Snowflake 无法发送通知并尝试再次发送通知,则此函数为每次尝试返回一行。每次尝试的行在 ID 列中具有相同的值,但在 ATTEMPT 列中具有不同的值。

ATTEMPT

INTEGER

尝试发送通知的次数。

MESSAGE_SOURCE_INFO

OBJECT

包含有关通知源的信息的对象。此对象中的字段取决于源的类型。

  • 对于预算通知,该对象包含以下字段:

    • budget_id:预算的标识符。

    • budget_name:预算的名称。

  • 对于任务的错误通知,该对象包含以下字段:

    • name:任务名称

    • graph_run_group_id:图形运行标识符。

    • attempt_number:整数表示尝试运行此任务的次数。

  • 对于 Snowpipe 的错误通知,该对象包含 pipe_name 字段,用于指定管道的名称。

  • 对于通过调用 SYSTEM$SEND_SNOWFLAKE_NOTIFICATION 或 SYSTEM$SEND_EMAIL 存储过程发送的通知,该对象包含 query_id 字段,用于指定调用存储过程的语句的 ID。

使用说明

  • 仅对 ACCOUNTADMIN 角色、集成所有者(即对集成具有 OWNERSHIP 权限的角色)或对集成具有 USAGE 权限的角色返回结果。

  • 当调用 Information Schema 表函数时,会话必须具有正在使用的 INFORMATION_SCHEMA 架构,或者 函数名称必须受到完全限定。有关更多详细信息,请参阅 Snowflake Information Schema

示例

以下部分包含调用该函数的示例以及该函数输出的示例:

调用函数的示例

以下示例说明如何调用该函数:

检索最新通知

检索过去 24 小时内创建的最新通知。

SELECT * FROM TABLE(INFORMATION_SCHEMA.NOTIFICATION_HISTORY());
Copy

按时间和集成名称检索通知

检索过去一小时内创建并使用名为 my_integration 的集成发送的最新通知。

SELECT * FROM TABLE(INFORMATION_SCHEMA.NOTIFICATION_HISTORY(
  START_TIME=>DATEADD('hour',-1,CURRENT_TIMESTAMP()),
  END_TIME=>CURRENT_TIMESTAMP(),
  RESULT_LIMIT=>100,
  INTEGRATION_NAME=>'my_integration'));
Copy

函数的输出示例

以下示例解释了该函数针对不同状态下的通知请求返回的输出:

两次尝试失败且正在进行第三次尝试时的输出示例

此示例选择输出中的列子集:

SELECT id, attempt, created, processed, status
  FROM TABLE(INFORMATION_SCHEMA.NOTIFICATION_HISTORY());
Copy

输出包括代表尝试发送一个通知的行。在输出中:

  • ID 列标识正在发送的通知。

  • 前两次发送通知的尝试均失败,但系统可以再次尝试发送通知(如 STATUS 列中的值 RETRIABLE_FAILURE 所示)。

  • 第三次尝试正在处理,如 STATUS 列中的值 QUEUED 所示。

+-------------------+-------------+-----------------------------------+-----------------------------------+-----------------------+
|   ID              |   ATTEMPT   |   CREATED                         |   PROCESSED                       |   STATUS              |
+-------------------+-------------+-----------------------------------+-----------------------------------+-----------------------+
|   10ae695e-93c3   |   3         |   2023-12-05 15:10:15.194 -0800   |   NULL                            |   QUEUED              |
|   10ae695e-93c3   |   2         |   2023-12-05 15:10:15.194 -0800   |   2023-12-05 15:11:21.443 -0800   |   RETRIABLE_FAILURE   |
|   10ae695e-93c3   |   1         |   2023-12-05 15:10:15.194 -0800   |   2023-12-05 15:10:21.443 -0800   |   RETRIABLE_FAILURE   |
+-------------------+-------------+-----------------------------------+-----------------------------------+-----------------------+

两次尝试失败且第三次尝试成功时的输出示例

此示例选择输出中的列子集:

SELECT id, attempt, created, processed, status
  FROM TABLE(INFORMATION_SCHEMA.NOTIFICATION_HISTORY());
Copy

输出包括代表尝试发送一个通知的行。在输出中:

  • ID 列标识正在发送的通知。

  • 前两次发送通知的尝试均失败,但系统可以再次尝试发送通知(如 STATUS 列中的值 RETRIABLE_FAILURE 所示)。

  • 第三次尝试成功,如 STATUS 列中的值 SUCCESS 所示。

+-------------------+-------------+-----------------------------------+-----------------------------------+-----------------------+
|   ID              |   ATTEMPT   |   CREATED                         |   PROCESSED                       |   STATUS              |
+-------------------+-------------+-----------------------------------+-----------------------------------+-----------------------+
|   10ae695e-93c3   |   3         |   2023-12-05 15:10:15.194 -0800   |   2023-12-05 15:12:21.443 -0800   |   SUCCESS             |
|   10ae695e-93c3   |   2         |   2023-12-05 15:10:15.194 -0800   |   2023-12-05 15:11:21.443 -0800   |   RETRIABLE_FAILURE   |
|   10ae695e-93c3   |   1         |   2023-12-05 15:10:15.194 -0800   |   2023-12-05 15:10:21.443 -0800   |   RETRIABLE_FAILURE   |
+-------------------+-------------+-----------------------------------+-----------------------------------+-----------------------+
语言: 中文