es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La utilización de la función athena array_agg para ordenar por múltiples valores produce un resultado incorrecto en el ordenamiento.

El array_agg de AWS Athena, al ser ordenado por múltiples valores, puede devolver un orden incorrecto.

Aquí está la reproducibilidad mínima:


with xxx(id, sort_by, val) as (
values
(1, 'a' , 999),
(1, 'b', 555)
)
select
id,
array_agg(val order by sort_by) as single_sort, -- [999, 555]
array_agg(val order by sort_by, val) as dual_sort -- [555, 999]
from
xxx
group by
id

Resultado:

<h2>id | single<em>sort |  dual</em>sort |</h2>

1 |  [999, 555] | [555, 999] |

He comprobado en Presto y PostgreSQL y ambos devuelven el [999, 555] correcto para ordenar simples y dobles.

¿Alguien sabe si se está siguiendo este problema o tiene alguna solución sugerida que pueda admitir tipos de datos arbitrarios?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que la función array_agg de AWS Athena, cuando se ordena por múltiples valores, puede devolver un orden incorrecto. Se proporciona un ejemplo mínimo reproducible arriba, que muestra que el resultado de array_agg(val order by sort_by) es [999, 555], mientras que el resultado de array_agg(val order by sort_by, val) es [555, 999]. Este problema ha sido probado en Presto y PostgreSQL, que devuelven el correcto [999, 555] para ordenar sencillo y doble.

    No está claro si se está haciendo un seguimiento de este problema, o si hay una solución alternativa sugerida que pueda admitir tipos de datos arbitrarios.

Comments are closed.