- 类别:
系统函数 (系统信息)
SYSTEM$EXTERNAL_TABLE_PIPE_STATUS¶
检索与外部表关联的内部(隐藏)管道对象的当前刷新状态的 JSON 表示形式。
外部表的元数据的自动刷新在内部依赖于 Snowpipe。当受监控的云存储发生更改时,Snowpipe 会接收事件通知。有关更多信息,请参阅 外部表简介。
语法¶
SYSTEM$EXTERNAL_TABLE_PIPE_STATUS( '<external_table_name>' )
实参¶
external_table_name
要检索其当前自动刷新状态的外部表。
使用说明¶
此函数仅针对外部表所有者(即,具有外部表的 OWNERSHIP 权限的角色)返回结果。
external_table_name
是一个字符串,因此必须放在单引号内:请注意,整个名称必须放在单引号内,包括数据库和架构(如果名称是完全限定名称),即
'<db>.<schema>.<external_table_name>'
。如果外部表名称区分大小写或包含任何特殊字符或空格,则需要使用双引号来处理大小写/字符。双引号必须放在单引号内,即
'"<pipe_name>"'
。
输出¶
函数返回包含以下名称/值对的 JSON 对象(如果适用于当前管道状态):
{"executionState":"<value>","oldestPendingFilePath":"<value>","oldestFileTimestamp":<value>,"pendingFileCount":<value>,"lastPipeFaultTimestamp":"<value>","notificationChannelName":"<value>","numOutstandingMessagesOnChannel":<value>,"lastReceivedMessageTimestamp":"<value>","lastForwardedMessageTimestamp":"<value>","error":<value>,"fault":<value>,"lastPulledFromChannelTimestamp":"<value>","lastForwardedFilePath":"<value>"}
其中:
executionState
管道的当前执行状态。该值可以是以下任一值:
RUNNING
(即,一切正常;Snowflake 可能或不可能主动处理此管道的事件消息)
STOPPED_CLONED
(即管道包含在数据库或架构克隆内)
STOPPED_FEATURE_DISABLED
STOPPED_STAGE_DROPPED
STOPPED_FILE_FORMAT_DROPPED
STOPPED_NOTIFICATION_INTEGRATION_DROPPED
STOPPED_MISSING_PIPE
STOPPED_MISSING_TABLE
(删除了管道定义中定义的目标表)
STALLED_COMPILATION_ERROR
STALLED_INITIALIZATION_ERROR
STALLED_EXECUTION_ERROR
STALLED_INTERNAL_ERROR
PAUSED
PAUSED_BY_SNOWFLAKE_ADMIN
PAUSED_BY_ACCOUNT_ADMIN
oldestPendingFilePath
当前排队等待元数据刷新操作的最早数据文件的路径。将文件添加到队列时的时间戳以
oldestFileTimestamp
属性返回。oldestFileTimestamp
当前排队等待元数据刷新操作的数据文件中的最早时间戳(如果适用),其中时间戳在文件添加到队列时设置。
pendingFileCount
管道当前正在处理的文件数。此值会随外部表元数据的刷新而减小。当此值为
0
时,此管道没有排队的元数据刷新。lastPipeFaultTimestamp
最近一次检测到内部 Snowflake 处理错误的时间戳。
notificationChannelName
与管道关联的 Amazon SQS 队列或 Microsoft Azure 存储队列。
numOutstandingMessagesOnChannel
队列中已排队但尚未收到的消息数。
lastReceivedMessageTimestamp
从队列接收的最后一条消息的时间戳。
lastForwardedMessageTimestamp
最近一条适用事件消息的时间戳,其中包含转发到管道的匹配路径/前缀。
channelErrorMessage
尝试从关联的云消息传递服务队列中读取消息时生成的错误消息。
lastErrorRecordTimestamp
最后一个通道错误消息的时间戳(即
channelErrorMessage
值中报告的错误消息)。error
上次编译管道以执行时产生的错误消息(如果适用);通常是由于权限问题或删除对象导致访问必要对象(即表、暂存区、文件格式)的问题。
fault
最近的内部 Snowflake 进程错误(如果适用)。主要由 Snowflake 用于调试目的。
lastPulledFromChannelTimestamp
Snowpipe 最近一次从云消息传递服务队列中提取管道事件通知时的时间戳。
lastForwardedFilePath
转发到管道的最近一条适用事件消息中识别到的数据文件的路径。
示例¶
检索名称不区分大小写的外部表的自动刷新状态:
SELECT SYSTEM$EXTERNAL_TABLE_PIPE_STATUS('mydb.myschema.exttable'); +---------------------------------------------------------------+ | SYSTEM$EXTERNAL_TABLE_PIPE_STATUS('MYDB.MYSCHEMA.EXTTABLE') | |---------------------------------------------------------------| | {"executionState":"RUNNING","pendingFileCount":0} | +---------------------------------------------------------------+
检索名称区分大小写的管道的状态:
SELECT SYSTEM$EXTERNAL_TABLE_PIPE_STATUS('mydb.myschema."extTable"'); +---------------------------------------------------------------+ | SYSTEM$EXTERNAL_TABLE_PIPE_STATUS('MYDB.MYSCHEMA."extTable"') | |---------------------------------------------------------------| | {"executionState":"RUNNING","pendingFileCount":0} | +---------------------------------------------------------------+