COPY_HISTORY¶
此表函数可用于查询过去 14 天内不同维度的 Snowflake 数据加载历史记录。该函数返回 COPY INTO <table> 语句和使用 Snowpipe 的连续加载数据的加载活动。表函数避免了 LOAD_HISTORY 视图 的 10,000 行限制。结果可以使用 SQL 谓词进行筛选。
您还可以在 Snowsight 中查看数据加载详细信息。请参阅 使用复制历史记录监控数据加载活动。
语法¶
COPY_HISTORY(
TABLE_NAME => '<string>'
, START_TIME => <constant_expr>
[, END_TIME => <constant_expr> ] )
实参¶
必填:
TABLE_NAME => 'string'
指定表名称的字符串。
START_TIME => constant_expr
过去 14 天内的时间戳(TIMESTAMP_LTZ 格式),表示检索加载事件的时间范围的开始时间。
可选:
END_TIME => constant_expr
过去 14 天内的时间戳(TIMESTAMP_LTZ 格式),表示检索加载事件的时间范围的结束时间。
使用说明¶
对于批量数据加载,此函数返回对 Snowflake 账户具有 MONITOR 权限的角色的结果,或者 对架构和数据库具有 USAGE 权限且对表具有任何权限的角色的结果。
对于 Snowpipe 数据加载,此函数返回对 Snowflake 账户具有 MONITOR 权限的角色的结果,或者 对包含管道架构和数据库具有 USAGE 权限且对表具有任何权限的角色的结果。此外,如果管道上的 MONITOR 不可用,管道名称、管道表名称、管道架构名称和管道目录名称将被掩盖,显示为 NULL。
当调用 Information Schema 表函数时,会话必须具有正在使用的 INFORMATION_SCHEMA 架构,或者 函数名称必须受到完全限定。有关更多详细信息,请参阅 Snowflake Information Schema。
此视图最多可返回 14 天的复制历史记录。要避免此限制,请使用 COPY_HISTORY 视图 (Account Usage)。
该函数仅包括已执行并完成的 COPY INTO 命令,无论是否出错。
弃用或重新创建表对象会删除批量数据加载(COPY INTO <table> 语句)到表中的历史数据。
弃用或重新创建管道对象将移除使用管道的 Snowpipe 数据加载的历史数据。
COPY_HISTORY 视图仅在对目标表执行最新截断操作后才显示复制历史记录。这适用于 复制 之前和之后的 COPY_HISTORY 视图。
输出¶
该函数返回以下列:
列名称 |
数据类型 |
描述 |
---|---|---|
FILE_NAME |
TEXT |
源文件的名称和文件的相对路径。 |
STAGE_LOCATION |
TEXT |
源文件所在的暂存区的名称。 |
LAST_LOAD_TIME |
TIMESTAMP_LTZ |
文件完成加载的日期和时间。 |
ROW_COUNT |
NUMBER |
从源文件加载的行数。 |
ROW_PARSED |
NUMBER |
从源文件中解析的行数;如果 STATUS 为 |
FILE_SIZE |
NUMBER |
加载的源文件的大小(以字节为单位)。 |
FIRST_ERROR_MESSAGE |
TEXT |
源文件的第一个错误。 |
FIRST_ERROR_LINE_NUMBER |
NUMBER |
第一个错误的行号。 |
FIRST_ERROR_CHARACTER_POS |
NUMBER |
第一个错误字符的位置。 |
FIRST_ERROR_COLUMN_NAME |
TEXT |
第一个错误的列名称。 |
ERROR_COUNT |
NUMBER |
源文件中的错误行数。 |
ERROR_LIMIT |
NUMBER |
如果错误数达到此限制,则中止。 |
STATUS |
TEXT |
状态: |
TABLE_CATALOG_NAME |
TEXT |
目标表所在的数据库的名称。 |
TABLE_SCHEMA_NAME |
TEXT |
目标表所在的架构的名称。 |
TABLE_NAME |
TEXT |
目标表的名称。 |
PIPE_CATALOG_NAME |
TEXT |
管道所在的数据库的名称。 |
PIPE_SCHEMA_NAME |
TEXT |
管道所在的架构的名称。 |
PIPE_NAME |
TEXT |
定义加载参数的管道名称;对于 COPY 语句加载,该名称为 |
PIPE_RECEIVED_TIME |
TIMESTAMP_LTZ |
收到通过管道加载的文件的 INSERT 请求的日期和时间;对于 COPY 语句加载,则为 |
示例¶
检索有关过去一小时内所有加载活动的详细信息:
select * from table(information_schema.copy_history(TABLE_NAME=>'MYTABLE', START_TIME=> DATEADD(hours, -1, CURRENT_TIMESTAMP())));