presto/athena 中有没有一种方法可以根据条件获取列名并将其用于分组依据?

Is there a way in presto/athena to get column names based on a condition and use that in group by?

athena/presto有没有办法根据条件获取列名并在分组依据中使用它?

SHOW COLUMNS FROM {table_name}

此查询提供了列的详细信息。但我只想在其他查询中使用列名。 table 的结构看起来像

name_of_service | cost | usage_date | user_123 | user_212 | user_342 | user_5832 | ...

等等。大约有 500 列

我正在查看的用例看起来有点像这样 -

SELECT SUM(cost), {column_names_which_start_with_user}
FROM {db}
GROUP BY cost, {column_names_which_start_with_user}

我无法控制数据库的填充,并且有 100 多个列的名称每个月都会更改。有办法吗?

有一个名为 information_schema 的虚拟数据库,可以查询有关表和列的元数据:

SELECT column_name
FROM information_schema.columns
WHERE table_name = 'my_table'
AND column_name LIKE 'user_%'

遗憾的是,您不能使用它来生成查询的列列表,因为查询不能像那样动态。但是,您可以在客户端代码中使用它来生成您之后的查询。