PRESTO SQL 转换为 Databricks SQL

问题描述 投票:0回答:1

我正在将 PRESTO sql 转换为 databricks sql。你能帮我转换以下子查询吗?

PSF_PIVOT
AS (SELECT A.PATIENT_ID, A.REPORT_ID, A.VISIT_DATE, A.DISEASE_GROUP, 
            MAP_AGG(A.NAME, A.VALUE) AS KV
    FROM PSF_BEST A
    GROUP BY A.PATIENT_ID, A.REPORT_ID, A.VISIT_DATE, A.DISEASE_GROUP
   )

我在转换上面的 MAP_AGG 部分时遇到问题。

提前致谢!

我尝试使用 MAP 而不是 MAP_AGG 函数,但结束时出现以下错误:

[COLUMN_NOT_IN_GROUP_BY_CLAUSE] The expression "NAME" is neither present in the group by, nor is it an aggregate function. Add to group by or wrap in `first()` (or `first_value()`) if you don't care which value you get.

有等效的 PIVOT 方法可以实现这一点。但是我对Databricks中的这个功能不是很熟悉。

sql pivot-table databricks aggregate-functions presto
1个回答
0
投票

map
是标量函数,不能用作聚合函数。尝试在聚合数组上使用
map_from_arrays

select ...,
    map_from_arrays(array_agg(A.NAME), array_agg(A.VALUE)) AS KV
from ...
group by
© www.soinside.com 2019 - 2024. All rights reserved.