Athena是否支持类似于STRING_AGG的函数来查询表格?

0

【以下的问题经过翻译处理】 我想用SQL中的STRING_AGG函数将来自Athena的不同行的字符串值连接起来。 Athena报错说STRING_AGG未注册。

语法错误:第1行8处:函数string_agg未注册。

有没有注册STRING_AGG函数的方法? 或者,是否有其他方法可以实现我想要的效果?

以下是我的SQL语句:

select STRING_AGG(item,“,”), STRING_AGG(event_subtype,“,”), STRING_ADD(event_dt_utc,“,”) from ( (select user_id as user,advertiser_id as advertiser,tracked_item as item,event_subtype,event_dt_utc from fact_mouse_conversions_glue where total_product_sales > 0 and user_id IS NOT NULL and tracked_item IS NOT NULL) union all (select user_id as user,advertiser_id as advertiser,tracked_item as item,event_subtype,event_dt_utc from fact_clickstream_conversions_glue where user_id IS NOT NULL and tracked_item IS NOT NULL)) group by user

profile picture
专家
已提问 5 个月前1 查看次数
1 回答
0

【以下的回答经过翻译处理】 在Athena中不支持STRING_AGG函数。如果要查看Athena支持哪些函数,请根据您使用的引擎的V2或V3版本,查看https://docs.aws.amazon.com/athena/latest/ug/functions.html。也许在V3中可以使用LISTAGG函数解决您的问题,请参阅https://trino.io/docs/current/functions/aggregate.html#listagg

让我回答您的另一个问题。是的,您可以在Amazon Athena中注册自定义函数。Athena允许您创建自定义标量函数,这些函数定义在Java或Scala JAR文件中,并且已在Athena中进行注册。然后,您可以在Athena查询的SELECT、FROM、WHERE和HAVING子句中使用这些自定义函数。

要创建自定义函数,您需要按照以下步骤进行操作:

  1. 用Java或Scala编写函数代码,并将其打包成JAR文件。函数必须实现org.apache.hadoop.hive.ql.exec.UDF接口,并包含@UDFType@Description注释。

  2. 创建Amazon S3存储桶以存储JAR文件。

  3. 将JAR文件上传到S3存储桶中。

  4. 运行CREATE FUNCTION语句在Athena中创建函数。此语句的语法如下:

    CREATE FUNCTION [function_name]
    AS 'com.example.MyFunction'
    USING JAR 's3://[bucket_name]/[jar_file_name]';
    

    将function_name替换为您要给函数取的名称,将com.example.MyFunction替换为JAR文件中函数类的完全限定名称,将s3://[bucket_name]/[jar_file_name]替换为S3中JAR文件的位置。

函数创建后,您可以像使用其他函数一样在Athena查询中调用它。例如:

SELECT my_function(column) FROM table;

希望这可以帮助您!

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则