Запросы SQL со столбцом, являющимся картой [Int, Int] - PullRequest
0 голосов
/ 09 мая 2019

Я работаю над генератором запросов Scala.

Один из моих столбцов: Map[Int, Int]

Как будет выглядеть запрос sql для запроса значения одной из пар?

Что-то вроде:

WHERE Map[KEY] >= VALUE

Как получить доступ к одному значению на карте в столбце в SQL?

Синтаксис может быть с использованием Postgresql или Athena.Если я знаю название запроса, я всегда могу найти альтернативы.

Спасибо.

1 Ответ

0 голосов
/ 09 мая 2019

Нашли решение:

С https://docs.aws.amazon.com/athena/latest/ug/maps.html

Вы можете пойти в Афину и запустить:

WITH dataset AS (
  SELECT MAP(
    ARRAY['first', 'last', 'age'],
    ARRAY['Bob', 'Smith', '35']
  ) AS user UNION ALL
  SELECT MAP(
    ARRAY['first', 'last', 'age'],
    ARRAY['john', 'doe', '12']
  ) AS user
)
SELECT user FROM dataset WHERE CAST(user['age'] AS bigint) > 20

Так что ответ был то, что я спросил в моем примере! ха-ха

WHERE map[key] <operator> <value>

Также, если вы делаете:

SELECT user FROM dataset WHERE CAST(user['test'] AS bigint) > 20

А ключ test не существует, он вернет 0 строку.

...