EXTERNAL_FUNCTIONS_HISTORY¶
此表函数检索 Snowflake 为整个 Snowflake 账户调用的外部函数的历史记录。
备注
此函数只能返回过去 14 天内活动的结果。
语法¶
EXTERNAL_FUNCTIONS_HISTORY(
[ DATE_RANGE_START => <constant_date_expression> ]
[, DATE_RANGE_END => <constant_date_expression> ]
[, FUNCTION_SIGNATURE => '<string>' ] )
实参¶
所有实参均为可选。
DATE_RANGE_START => constant_date_expression
、.DATE_RANGE_END => constant_date_expression
过去 2 周内要检索历史记录的日期/时间范围:
如果未指定结束日期,则会将 CURRENT_DATE 用作范围的结束日期。
如果未指定开始日期,则范围会在
DATE_RANGE_END
开始前 10 分钟开始(即默认值是显示前 10 分钟的历史记录)。例如,如果DATE_RANGE_END
是 CURRENT_DATE,则默认DATE_RANGE_START
是 前一天 11:50 PM。
历史记录以 5 分钟、1 小时或 24 小时为增量显示(取决于指定范围的长度)。
如果范围超出了过去 15 天,则返回错误。
FUNCTION_SIGNATURE => string
指定外部函数名称和函数实参的数据类型的字符串。(数据类型区分重载函数名称。)仅返回有关该函数的信息。
将签名放在单引号内,例如:
function_signature => 'mydb.public.myfunction(integer, varchar)'
请注意,指定了实参数据类型,但未指定实参名称。
如果未指定签名,则输出包括时间范围内使用的所有外部函数的总数,并且结果中的以下列显示 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 |
从中发送行的云平台(例如 |
SOURCE_REGION |
TEXT |
从中发送行的区域(例如 |
TARGET_CLOUD |
TEXT |
将行发送到的云平台(例如 |
TARGET_REGION |
TEXT |
将行发送到的区域(例如 |
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')));
检索账户中单个外部函数过去 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)'));
检索账户过去 14 天的历史记录,以 1 天为周期:
select * from table(information_schema.external_functions_history( date_range_start => dateadd('day', -14, current_date()), date_range_end => current_date()));
检索账户中指定函数的过去 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)'));
故障排除¶
症状:EXTERNAL_FUNCTIONS_HISTORY 返回“...invalid identifier...”¶
- 可能的原因:
您可能没有将函数签名放在单引号内。例如,以下内容是错误的,因为它不包括引号:
select * from table(information_schema.external_functions_history( function_signature => mydb.public.myfunction(integer, varchar)));
- 可能的解决方案:
通过在函数签名周围添加引号来更正此问题:
select * from table(information_schema.external_functions_history( function_signature => 'mydb.public.myfunction(integer, varchar)'));
症状:EXTERNAL_FUNCTIONS_HISTORY 仅返回一行输出,并且许多列是 NULL¶
- 可能的原因:
您可能没有包括函数签名。如果未指定函数签名,则 EXTERNAL_FUNCTION_HISTORY() 返回 INVOCATIONS、SENT ROWS 等列的聚合值,并为函数名称、实参列表等列返回 NULL。
- 可能的解决方案:
如果要获取一个函数的信息,请包含函数签名。
如果要获取所有函数的信息,则某些列的 NULL 值是正确的,并且不需要修复查询。