Retrieve archived data¶
备注
存储生命周期策略 目前在政府区域不可用。
使用 CREATE TABLE ... FROM ARCHIVE OF 命令读取存档数据。
For example, the following statement creates a new table from archived rows where the value in the event_timestamp column is between
January 15 and January 20 of 2023:
CREATE TABLE my_table
FROM ARCHIVE OF my_source_table AS st
WHERE st.event_timestamp BETWEEN '01/15/2023' AND '01/20/2023';
有关语法详细信息和参数说明,请参阅 CREATE TABLE 文档中的 CREATE TABLE ... FROM ARCHIVE OF。
备注
使用此命令需要对源表的 OWNERSHIP 权限。
不支持指定列定义、策略、标签或其他约束。Snowflake 会自动从源表中检索表架构、策略、标签和约束。
WHERE 子句为必填项。读取存档数据的成本很高,因此不应频繁执行。使用 WHERE 子句筛选结果,可确保 Snowflake 仅从归档存储中读取您需要的数据,从而帮助您尽可能降低成本。
要估计 Snowflake 将从归档存储中检索的文件数,请在执行此操作之前运行 EXPLAIN 命令。该输出包含
createTableFromArchiveData操作,并在 TableScan 操作对应的objects列中显示ARCHIVE OF <table>。有关更多信息,请参阅 使用 EXPLAIN 估算检索成本。要查看从归档存储中检索数据的历史记录,请使用 ARCHIVE_STORAGE_DATA_RETRIEVAL_USAGE_HISTORY 视图。
要从归档存储的 COLD 层中检索数据,Snowflake 必须先从外部云存储中恢复文件。此过程最多可能需要 48 小时。
要支持此过程,请适当设置以下参数:
STATEMENT_TIMEOUT_IN_SECONDS 必须至少为 48 小时。
ABORT_DETACHED_QUERY 必须为 FALSE。
COLD 存储层恢复操作每次恢复操作最多支持 100 万个文件。
如果取消从归档存储中检索数据的 CREATE TABLE 操作,可能仍会产生检索成本。
使用 EXPLAIN 估算检索成本¶
To estimate how many files Snowflake will retrieve from archive storage, use the EXPLAIN command.
The command output includes the following data:
operation列中的createTableFromArchiveData操作。TableScan 操作对应的
objects列中的ARCHIVE OF <table>。归档 TableScan 操作对应的
assignedPartitions列中将检索到的分区数。此值表示 Snowflake 将从冷存储层恢复的分区数,以便从归档存储中检索数据。
例如:
EXPLAIN
CREATE TABLE my_table
FROM ARCHIVE OF my_source_table AS st
WHERE st.event_timestamp BETWEEN '01/15/2023' AND '01/20/2023';