当前位置: 首页 > 知识库问答 >
问题:

AWS雅典娜支持ARRAY_AGG中的Order by吗?

刘海
2023-03-14
xid pid sequence    text
1   1   0           select * from
1   1   1           mytbl
1   1   2   
2   1   0           update test
2   1   1            set mycol=
2   1   2           'a';
xid pid text
1   1   select * from mytbl
2   1   update test set mycol='a';
with cte as
    (SELECT  
         xid,
        pid,

         sequence,
         text,
        row_number()
        OVER (PARTITION BY  xid,pid
    ORDER BY  sequence) AS rank
    FROM unload 
    GROUP BY   xid,pid,sequence,text
    )
SELECT 
         xid,
        pid,
        array_join(array_agg(text),'') as text
FROM cte
GROUP BY   xid,pid
xid pid text
1   1   mytblselect * from
2   1   update test'a'; set mycol=

共有1个答案

简滨海
2023-03-14

一种方法:

  1. 创建可排序格式为文本
  2. 的记录
  3. 聚合到未排序的数组
  4. 对数组排序
  5. 将每个元素转换回text
  6. 的原始值
  7. 将排序数组转换为字符串输出列
WITH cte AS (
SELECT
xid, pid, text
-- create a sortable 19-digit ranking string
, SUBSTR(
  LPAD(
    CAST(
      ROW_NUMBER() OVER (PARTITION BY xid, pid ORDER BY sequence)
      AS VARCHAR)
    , 19
    , '0')
  , -19) AS SEQ_STR
FROM unload
)
SELECT
xid, pid
-- make sortable string, aggregate into array
-- then sort array, revert each element to original text
-- finally combine array elements into one string
, ARRAY_JOIN(
  TRANSFORM(
    ARRAY_SORT(
      ARRAY_AGG(SEQ_STR || text))
    , combined -> SUBSTR(combined, 1 + 19))
  , ' '
  , '') AS TEXT
FROM cte
GROUP BY xid, pid
ORDER BY xid, pid

此代码假定:

    null
 类似资料:
  • 问题内容: Athena查询的结果由S3中的查询ID(一个长字符串)保存。我想知道是否可以使用预先指定的名称保存查询结果?(以后可以轻松查看) 问题答案: 不幸的是,没有(至少现在还没有)!到目前为止,执行此操作的最佳方法是编写脚本以遍历每次运行的所有结果,然后重命名(移动+删除)该s3存储桶中的所有文件!

  • 我有一个到Athena的odbc连接,并且已经能够读取和检索数据了。例如,我在hive中创建了一个新的空表,它对Athena使用了与s3相同的元存储: 我可以使用DBI::DbReadTable读取这个新的空表: 返回: 如何使用DBI向s3发送数据帧?

  • 我在AWS雅典娜中使用以下查询: 如果我加上一个限制10,它就行了。但当我尝试对所有记录执行此操作时,我得到以下错误:处格式不正确 string type列中的所有日期都像这样-2/22/2020并且它正确地转换了。我不明白为什么它不会对其余的人做同样的事。

  • 如何使用雅典娜查询编辑器将字符串类型的列转换为日期类型。我正在尝试使用date_parse(字符串,格式),但在尝试以下操作时遇到以下问题: 有没有更简单的方法做到这一点?还是我错过了什么?感谢任何帮助!

  • 我正在使用Glue将CSV的从S3 bucket到AWS的Athena进行流水线处理,列的标题只是默认的'col0'、'col1'等,而列的真正标题是在第一行条目中找到的。在管道过程中或早期的postgreSQL查询中,是否有一种方法可以使第一行条目成为列名?最好避免在胶水爬行器中直接硬编码列名。

  • 问题内容: 我正在尝试创建以下视图: 它给了我以下错误: 您的查询具有以下错误:不支持的配置单元类型:带有时区的时间戳 但是,当我自己运行查询时,它可以正常工作,并且在这里提到From_iso8601_timestamp作为有效的日期函数。 谁能告诉我我在做什么错? 问题答案: 不幸的是,雅典娜并不完全支持Presto的所有功能,它具有局限性,并且在技术上比Presto落后几个版本。有一些尝试使A