我正在将 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中的这个功能不是很熟悉。
map
是标量函数,不能用作聚合函数。尝试在聚合数组上使用 map_from_arrays
:
select ...,
map_from_arrays(array_agg(A.NAME), array_agg(A.VALUE)) AS KV
from ...
group by