您可以在 AWS Athena 中使用架构或文件夹结构吗?

Can you have a schema or folder structure in AWS Athena?

我正在将整个雪花数据库复制到 S3 中,以便通过 Athena 查看。我想保留 schema/hierarchy 以便相应的查询不会更改。在 S3 中为此正确组织了所有文件,如下所示

DataBase/Schema/Folder/Table/{镶木地板文件}

当我使用 Glue 进行爬网时,它们最终都会出现在同一个数据库中。是否可以在 Athena 中使用类似的文件夹结构?

现在 Athena 中的所有查询都像

Select *
FROM database.table

我想要

Select *
FROM database.schema.folder.table

Athena 中唯一可用的表逻辑分组是 database,正如您所指出的,Athena 中没有层次结构、模式或文件夹的概念。

数据库和模式在 Snowflake 中组成 namespace。如果您的目的是简单地拥有一个类似的命名空间,您可以将 Snowflake 数据库 d1 和模式名称 s1 结合起来,在 Athena d1_s1 中创建一个扁平化的逻辑分组。然后你可以这样做:

SELECT * FROM d1_s1.table

此外,数据库名称中唯一可以包含的特殊字符是 underscore,因此确实没有其他方法可以保留结构或现有查询。至少,这种格式足够接近,以编程方式修复现有查询应该足够容易(例如,使用正则表达式将 a.b.c 替换为 a_b.c)。

不过,还是会有差异的。例如,grants 对 Snowflake 数据库和模式的管理不同。模式也有一个概念managed access。这在 Athena 中是不可能的。