类别:

系统函数 (系统信息)

SYSTEM$PIPE_STATUS

检索管道当前状态的 JSON 表示形式。

有关更多信息,请参阅 Snowpipe

语法

SYSTEM$PIPE_STATUS( '<pipe_name>' )
Copy

实参

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} |
+---------------------------------------------------+
Copy

检索名称区分大小写的管道的状态:

SELECT SYSTEM$PIPE_STATUS('mydb.myschema."myPipe"');

+---------------------------------------------------+
| SYSTEM$PIPE_STATUS('MYDB.MYSCHEMA."MYPIPE"')      |
|---------------------------------------------------|
| {"executionState":"RUNNING","pendingFileCount":0} |
+---------------------------------------------------+
Copy

检索 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>"}]}}           |
+---------------------------------------------------+
Copy
语言: 中文