目录表¶
本主题介绍关键概念、提供辅助信息以及目录表使用说明的链接。
本主题内容:
什么是目录表?¶
目录表是暂存区上分层放置的隐式对象(不是单独的数据库对象),在概念上类似于外部表,因为它存储有关暂存区中数据文件的文件级元数据。目录表本身没有可授予的权限。
外部(外部云存储)和内部 (Snowflake) 暂存区都支持目录表。您可以在创建暂存区时(使用 CREATE STAGE)或稍后(使用 ALTER STAGE)将目录表添加到暂存区。
特别是,您可以使用目录表来完成以下非结构化数据任务:
查询暂存区上所有非结构化文件的列表。您可以查询目录表,检索暂存区上所有文件的列表。查询输出包含有关每个文件的信息,包括大小、上次修改时间的时间戳及其 Snowflake 文件 URL。
创建非结构化数据的视图。您可以将目录表与包含有关非结构化文件的附加数据和元数据的 Snowflake 表联接,以便在单个视图中查看非结构化文件及其相关数据。
构建文件处理管道。您可以将目录表与 Snowpark API 或外部函数结合使用,以创建文件处理管道。
要在暂存区注册对文件的更改,可以 刷新目录表元数据。
目录表计费¶
费用包含用于管理目录表元数据自动刷新的事件通知的开销。随着针对包含目录表的暂存区的云存储中添加的文件数量增加,此开销也会增加。此开销会在账单中显示为 Snowpipe 费用,因为自动目录表刷新的事件通知会使用 Snowpipe。您可以通过查询 PIPE_USAGE_HISTORY 函数或检查 Account Usage PIPE_USAGE_HISTORY 视图 来估算此费用。
此外,还会收取小额维护开销,用于手动刷新目录表元数据(使用 ALTER STAGE ...REFRESH)。与 Snowflake 中的所有类似活动一样,此开销根据标准 云服务计费模型 收取。
如果用户担任 ACCOUNTADMIN 角色或担任具有全局 MONITOR USAGE 权限的角色,则可以查询 AUTO_REFRESH_REGISTRATION_HISTORY 表功能,检索在指定对象的元数据中注册的数据文件的历史记录以及为这些操作计费的 credit。
目录表的访问控制要求¶
下表总结了在使用目录表时执行常见 SQL 命令所需的暂存区 权限。
操作 |
对象类型 |
需要权限 |
---|---|---|
使用 SELECT FROM DIRECTORY 语句,从目录表检索文件 URLs。 |
暂存区 |
下面其中一种权限,具体取决于暂存区的类型:
|
使用 PUT 命令上传数据。 |
暂存区(仅限内部) |
具有暂存区 WRITE 权限的账户角色或数据库角色。 |
使用 REMOVE 命令移除文件。 |
暂存区 |
下面其中一种权限,具体取决于暂存区的类型:
|
使用 ALTER STAGE 命令刷新元数据。 |
暂存区 |
下面其中一种权限,具体取决于暂存区的类型:
|
Information Schema¶
Snowflake Snowflake Information Schema 包含您可以查询的表函数,以检索有关目录表的信息。
表函数¶
- AUTO_REFRESH_REGISTRATION_HISTORY
检索在指定对象元数据中注册的数据文件的历史记录,以及为这些操作计费的 credit。
- STAGE_DIRECTORY_FILE_REGISTRATION_HISTORY
检索有关目录表的元数据历史记录的信息,包括刷新元数据时发现的任何错误。
后续主题: