Использование массива SQL в радианах в AWS Афина / Престо - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь передать массив координат широты и долготы через функцию radians () в AWS Афина, но получаю ошибку

Unexpected parameters (array(double)) for function radians. Expected: radians(double)

Мне нужно иметь возможность передавать массивы через lat_array и long_array, чтобы проверить, находится ли каждый набор координат в пределах 1 мили от каждой широты и долготы, заданной в my_table.

WITH
target_addresses AS (
SELECT ARRAY[CAST(lat AS real)] AS lat,
       ARRAY[CAST(long AS real)] AS long
FROM addresses
)

SELECT user_id, 
       ( 3959 * 
         ACOS( 
         COS( RADIANS( lat_array ) ) * 
         COS( RADIANS( latitude ) ) * 
         COS( RADIANS( longitude ) - RADIANS( long_array ) ) + 
         SIN( RADIANS( lat_array ) ) * 
         SIN( RADIANS( latitude) ) 
        ) 
       ) AS distance 
FROM 
 my_table,
 (SELECT array_agg(la) AS lat_array,
         array_agg(lo) AS long_array 
  FROM target_addresses
  CROSS JOIN UNNEST(lat) AS t(la)
  CROSS JOIN UNNEST(long) AS t(lo)) target_params
HAVING distance <= 1
ORDER BY distance ASC;

Есть ли лучший способ запроса для достижения этого результата?

...