- 类别:
系统函数 (系统信息)
SYSTEM$PIPE_STATUS¶
检索管道当前状态的 JSON 表示形式。
有关更多信息,请参阅 Snowpipe。
语法¶
SYSTEM$PIPE_STATUS( '<pipe_name>' )
实参¶
pipe_name
要检索其当前状态的管道。
使用说明¶
仅返回管道所有者(即具有管道的 OWNERSHIP 权限的角色)的结果或具有管道的 MONITOR 权限的角色的结果。
pipe_name
是一个字符串,因此必须放在单引号内:请注意,整个名称必须放在单引号内,包括数据库和架构(如果名称是完全限定名称),即
'<db>.<schema>.<pipe_name>'
。如果管道名称区分大小写或包含任何特殊字符或空格,则需要使用双引号来处理大小写/字符。双引号必须放在单引号内,即
'"<pipe_name>"'
。
输出¶
函数返回包含以下名称/值对的 JSON 对象(如果适用于当前管道状态):
{"executionState":"<value>","oldestPendingFilePath":"<value>","oldestFileTimestamp":<value>,"pendingFileCount":<value>,"lastPipeErrorTimestamp":"<value>","lastPipeFaultTimestamp":"<value>","lastIngestedTimestamp":"<value>","lastIngestedFilePath":"<value>","notificationChannelName":"<value>","numOutstandingMessagesOnChannel":<value>,"lastReceivedMessageTimestamp":"<value>","lastForwardedMessageTimestamp":"<value>","error":<value>,"fault":<value>,"lastPulledFromChannelTimestamp":"<value>","lastForwardedFilePath":"<value>","loadHistoryRemainingEntriesToSync":"<value>"}
其中:
executionState
管道的当前执行状态。该值可以是以下任一值:
FAILING_OVER
(管道正在从主账户故障转移到辅助账户)
PAUSED
READ_ONLY
(管道或目标表位于辅助只读数据库中。
RUNNING
(一切正常;Snowflake 可能会也可能不会主动处理此管道的文件)
STOPPED_BY_SNOWFLAKE_ADMIN
(管道由 Snowflake 支持部门 停止。管道将不会接受新文件引入。)
STOPPED_CLONED
(管道包含在数据库或架构克隆内)
STOPPED_FEATURE_DISABLED
STOPPED_STAGE_ALTERED
(由于底层暂存区位置已更改,因此管道已停止。)
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
STALLED_STAGE_PERMISSION_ERROR
(检测到外部暂存区权限错误。)oldestPendingFilePath
当前排队等待处理的最早数据文件的路径。将文件添加到队列时的时间戳将在现有 oldestFileTimestamp 属性中返回。
oldestFileTimestamp
当前排队的数据文件中最早的时间戳(如果适用),其中时间戳是在将文件添加到队列时设置的。
pendingFileCount
排队等待管道加载的文件数。
即使管道暂停,此计数也会增加。根据管道的
AUTO_INGEST
设置,排队的文件数可以按如下方式增加:
AUTO_INGEST = TRUE
添加到云存储桶或容器的文件会触发管道的新文件事件通知。
请注意,如果暂停的管道状态变为 过时,则
pendingFileCount
计数将忽略早于有限保留期的任何事件通知。AUTO_INGEST = FALSE
对
insertFiles
REST 端点的调用会触发文件排队等待管道加载。lastPipeErrorTimestamp
最近一次在管道定义中编译 COPY INTO <table> 语句以执行时产生错误的时间戳。
lastPipeFaultTimestamp
最近一次检测到内部 Snowflake 处理错误的时间戳。
lastIngestedTimestamp
Snowpipe 将最新文件成功加载到目标表中的时间戳。
lastIngestedFilePath
在 lastIngestedTimestamp 中指定的时间戳处加载的文件的路径。
notificationChannelName
与管道关联的 Amazon SQS 队列或 Microsoft Azure 存储队列。
numOutstandingMessagesOnChannel
队列中已排队但尚未收到的消息数。
lastReceivedMessageTimestamp
从队列接收的最后一条消息的时间戳。请注意,此消息可能不适用于特定管道,例如,如果与消息关联的路径/前缀与管道定义中的路径/前缀不匹配。此外,自动引入管道仅使用由创建的数据对象触发的消息。
lastForwardedMessageTimestamp
最后一条“创建对象”事件消息的时间戳,其中包含转发到管道的匹配路径/前缀。
channelErrorMessage
尝试从关联的 Google Cloud Pub/Sub 队列或 Microsoft Azure 事件网格存储队列读取消息时生成的错误消息。
lastErrorRecordTimestamp
最后一个通道错误消息的时间戳(即
channelErrorMessage
值中报告的错误消息)。error
上次编译管道以执行时产生的错误消息(如果适用);通常是由于权限问题或删除对象导致访问必要对象(即表、暂存区、文件格式)的问题。
fault
最近的内部 Snowflake 进程错误(如果适用)。主要由 Snowflake 用于调试目的。
lastPulledFromChannelTimestamp
Snowpipe 最近一次从 Amazon Simple Queue Service (SQS) 队列、Google Pub/Sub 队列或 Microsoft Azure 存储队列中提取管道的“创建对象”事件通知的时间戳。
此值仅适用于自动引入 Snowpipe 负载。
lastForwardedFilePath
转发到管道的最近一条“创建对象”事件消息中识别到的数据文件的路径。
loadHistoryRemainingEntriesToSync
要复制的剩余加载历史记录条目数。当管道发生故障转移时,负载历史条目可能会继续被复制到该管道,以确保来自最后一次刷新操作的更改是最新的。可以使用此字段监控管道加载历史记录的复制进度。
kafka
仅适用于Kafka管道
它表示与 Kafka 分区相关的详细信息:分区数量和每个分区的详细信息:分区 ID,当前偏移,高低水位和最后更新的时间戳。
示例¶
检索名称不区分大小写的管道的状态:
SELECT SYSTEM$PIPE_STATUS('mydb.myschema.mypipe'); +---------------------------------------------------+ | SYSTEM$PIPE_STATUS('MYDB.MYSCHEMA.MYPIPE') | |---------------------------------------------------| | {"executionState":"RUNNING","pendingFileCount":0} | +---------------------------------------------------+
检索名称区分大小写的管道的状态:
SELECT SYSTEM$PIPE_STATUS('mydb.myschema."myPipe"'); +---------------------------------------------------+ | SYSTEM$PIPE_STATUS('MYDB.MYSCHEMA."MYPIPE"') | |---------------------------------------------------| | {"executionState":"RUNNING","pendingFileCount":0} | +---------------------------------------------------+
检索 Kafka 管道的状态:
SELECT SYSTEM$PIPE_STATUS('mydb.myschema.mypipe'); +---------------------------------------------------+ | SYSTEM$PIPE_STATUS('MYDB.MYSCHEMA.MYPIPE') | |---------------------------------------------------| | {"executionState":"RUNNING", | | "kafka":{"partitionsCount":1,"partitions":[{ | | "id":0, | | "currentOffset":"6", | | "lowWatermark":0, | | "highWatermark":7, | | "lastUpdateTimestamp":"<timestamp>"}]}} | +---------------------------------------------------+