类别:

Information Schema表函数

EXTERNAL_FUNCTIONS_HISTORY

此表函数检索 Snowflake 为整个 Snowflake 账户调用的外部函数的历史记录。

备注

此函数只能返回过去 14 天内活动的结果。

语法

EXTERNAL_FUNCTIONS_HISTORY(
      [ DATE_RANGE_START => <constant_date_expression> ]
      [, DATE_RANGE_END => <constant_date_expression> ]
      [, FUNCTION_SIGNATURE => '<string>' ] )
Copy

实参

所有实参均为可选。

DATE_RANGE_START => constant_date_expression. DATE_RANGE_END => constant_date_expression

过去 2 周内要检索历史记录的日期/时间范围:

  • 如果未指定结束日期,则会将 CURRENT_DATE 用作范围的结束日期。

  • 如果未指定开始日期,则范围会在 DATE_RANGE_END 开始前 10 分钟开始(即默认值是显示前 10 分钟的历史记录)。例如,如果 DATE_RANGE_ENDCURRENT_DATE,则默认 DATE_RANGE_START前一天 11:50 PM。

历史记录以 5 分钟、1 小时或 24 小时为增量显示(取决于指定范围的长度)。

如果范围超出了过去 15 天,则返回错误。

FUNCTION_SIGNATURE => string

指定外部函数名称和函数实参的数据类型的字符串。(数据类型区分重载函数名称。)仅返回有关该函数的信息。

将签名放在单引号内,例如:

function_signature => 'mydb.public.myfunction(integer, varchar)'
Copy

请注意,指定了实参数据类型,但未指定实参名称。

如果未指定签名,则输出包括时间范围内使用的所有外部函数的总数,并且结果中的以下列显示 NULL:

  • FUNCTION_NAME。

  • ARGUMENTS。

  • FUNCTION_ENDPOINT_URL。

  • SOURCE_CLOUD。

  • SOURCE_REGION。

  • TARGET_CLOUD。

  • TARGET_REGION。

使用说明

  • 仅为 ACCOUNTADMIN 角色或任何已明确授予 MONITOR USAGE 全局权限的角色返回结果。

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

  • 名为 ARGUMENTS 的输出列不仅包括实实参据类型,还包括返回数据类型。名为 FUNCTION_SIGNATURE 的输入实参应包括实参的数据类型,但不包括返回数据类型。

  • 有关故障排除提示,请参阅 症状:EXTERNAL_FUNCTIONS_HISTORY 返回“...invalid identifier...”

输出

该函数返回以下列:

列名称

数据类型

描述

START_TIME

TIMESTAMP_LTZ

返回历史记录的指定时间范围的开始时间。

END_TIME

TIMESTAMP_LTZ

返回历史记录的指定时间范围的结束时间。

NAME

TEXT

返回历史记录的函数的名称。

ARGUMENTS

TEXT

实参和返回值的数据类型。实参的数据类型区分重载函数名称。

FUNCTION_ENDPOINT_URL

TEXT

函数调用的 HTTPS 端点。这通常是代理服务。

SOURCE_CLOUD

TEXT

从中发送行的云平台(例如 GCPAzureAWS)。

SOURCE_REGION

TEXT

从中发送行的区域(例如 eu-west-1)。

TARGET_CLOUD

TEXT

将行发送到的云平台(例如 GCPAzureAWS)。

TARGET_REGION

TEXT

将行发送到的区域(例如 eu-west-1)。

INVOCATIONS

NUMBER

在 START_TIME 和 END_TIME 窗口期间调用远程服务的次数。这包括重试(例如,由于临时网络问题)。

SENT_ROWS

NUMBER

在 START_TIME 和 END_TIME 窗口期间发送到外部端点的行数。

RECEIVED_ROWS

NUMBER

在 START_TIME 和 END_TIME 窗口期间从外部端点接收的行数。

SENT_BYTES

NUMBER

在 START_TIME 和 END_TIME 窗口期间发送到外部端点的字节数。

RECEIVED_BYTES

NUMBER

在 START_TIME 和 END_TIME 窗口期间从外部端点接收的字节数。

示例

检索账户 30 分钟范围内的历史记录,以 5 分钟为周期:

select *
  from table(information_schema.external_functions_history(
    date_range_start => to_timestamp_ltz('2020-05-24 12:00:00.000'),
    date_range_end => to_timestamp_ltz('2020-05-24 12:30:00.000')));
Copy

检索账户中单个外部函数过去 12 小时的历史记录,以 1 小时为周期:

select *
  from table(information_schema.external_functions_history(
    date_range_start => dateadd('hour', -12, current_timestamp()),
    function_signature => 'mydb.public.myfunction(integer, varchar)'));
Copy

检索账户过去 14 天的历史记录,以 1 天为周期:

select *
  from table(information_schema.external_functions_history(
    date_range_start => dateadd('day', -14, current_date()),
    date_range_end => current_date()));
Copy

检索账户中指定函数的过去 14 天的历史记录,以 1 天为周期:

select *
  from table(information_schema.external_functions_history(
    date_range_start => dateadd('day', -14, current_date()),
    date_range_end => current_date(),
    function_signature => 'mydb.public.myfunction(integer, varchar)'));
Copy

故障排除

症状:EXTERNAL_FUNCTIONS_HISTORY 返回“...invalid identifier...”

可能的原因:

您可能没有将函数签名放在单引号内。例如,以下内容是错误的,因为它不包括引号:

select *
  from table(information_schema.external_functions_history(
    function_signature => mydb.public.myfunction(integer, varchar)));
Copy
可能的解决方案:

通过在函数签名周围添加引号来更正此问题:

select *
  from table(information_schema.external_functions_history(
    function_signature => 'mydb.public.myfunction(integer, varchar)'));
Copy

症状:EXTERNAL_FUNCTIONS_HISTORY 仅返回一行输出,并且许多列是 NULL

可能的原因:

您可能没有包括函数签名。如果未指定函数签名,则 EXTERNAL_FUNCTION_HISTORY() 返回 INVOCATIONS、SENT ROWS 等列的聚合值,并为函数名称、实参列表等列返回 NULL。

可能的解决方案:

如果要获取一个函数的信息,请包含函数签名。

如果要获取所有函数的信息,则某些列的 NULL 值是正确的,并且不需要修复查询。

语言: 中文