Я пытаюсь переместить код MySQL в AWS athena.
У меня есть две таблицы: одна с location_name и границей (многоугольник), а другая таблица с rent_location (point)
Я присоединился к ним и создал новый столбец, в котором указывается location_name точки пересечения rent_location.
Вот мой запрос в MySQL:
select
r.*,
l.location_name
from rent r
left join location l
on ST_Intersects(l.polygon, ST_Point(ST_X(r.rent_location), ST_Y(r.rent_location)))
Однако он отлично работает, когда я пытаюсь сделать это в Aws Афине не получится. Я смотрел https://docs.aws.amazon.com/athena/latest/ug/geospatial-functions-list.html и пробовал несколько способов.
rent_location, l.polygon - оба типа двоичных данных.
Любая помощь будет очень принята. Спасибо!
Что я пробовал:
- From https://docs.aws.amazon.com/athena/latest/ug/geospatial-example-queries.html Я проверял, что ST_X (r.rent_location) преобразует двоичное в десятичное, однако не работает.
В Athena он не распознал lat, lng, если вы не указали ему псевдоним lat lng, поэтому я сделал:
WITH rent as(
select ST_X(rent_location) as lng
, ST_Y(rent_location) as lat
from rent_table
)
select
r.*,
l.location_name
from rent r
left join location l
on ST_Intersects(l.polygon, Point(ST_X(r.rent_location), ST_Y(r.rent_location)))
, но все равно не не работает. Я пробовал как ST_INTERSECT, так и ST_Contains. Единственное, что отличается от примера, это то, что ST_X (r.rent_location) выводит десятичный тип данных вместо двойного.
Когда я запускаю вышеуказанный запрос, я получаю
[Simba][AthenaJDBC](100071) An error has been thrown from the AWS Athena client. GENERIC_INTERNAL_ERROR: Input data format is not validated or supported
Я думаю, это из-за десятичный тип данных?
Как я могу изменить его на двойной тип данных в моем запросе?
РЕДАКТИРОВАТЬ 2: Я изменил тип данных ST_X (rent_location) на удвоение, используя cast(ST_X(rent_location) as double)
, но все та же GENERIC_INTERNAL_ERROR.