如何获取表的分区列名



我有一个在一列或多列上分区的表。我可以。。。

SHOW PARTITIONS table_db.table_1

它给出了像这样的所有分区的列表,

year=2007
year=2015
year=1999
year=1993

但我只对查找表在哪些列上进行分区感兴趣,在本例中为year。我希望能够一次处理多个表,给我一个它们的名称和分区列的列表,有点像这样。

table_name       partition_col
table_1          year
table_2          year, month

我在这里尝试了解决方案。。。

https://docs.aws.amazon.com/athena/latest/ug/querying-glue-catalog.html#querying-胶粘目录列出分区

SELECT * FROM table_db."table_1$partitions"

确实给了我每个分区一列的结果。。。

#     year
1     2007
2     2015
3     1999
4     1993

但是我无法从这个查询中提取列名。

试试这个。

SELECT table_name,
array_join(array_agg(column_name), ', ') as partition_col
FROM information_schema.columns
WHERE extra_info = 'partition key'
GROUP BY 1

使用您的语言提供的AWS客户端获取元数据,如python 的boto3 athena

import boto3
client = boto3.client()
table = client.get_table_metadata(
CatalogName=catalog,
DatabaseName=database,
TableName=name
)["TableMetadata"]
partition_keys = table["PartitionKeys"]

似乎解决方案是针对mysql而不是SQL Server的。

相关内容

  • 没有找到相关文章

最新更新