Ошибка переполнения в Redshift - PullRequest
0 голосов
/ 05 июня 2018

Я выполняю следующий, довольно простой запрос на Amazon Redshift:

SELECT member_id,
       COUNT(DISTINCT TO_CHAR(created_at,'YYYY-MM-DD')) AS days
FROM ads.fbs_modality_staging
WHERE member_id in (select memberid from auth.members)
group by member_id

Но это дает мне следующую ошибку:

An error occurred when executing the SQL command:
SELECT member_id,
       COUNT(DISTINCT TO_CHAR(created_at,'YYYY-MM-DD')) AS days
FROM ads.fbs_modality_staging
WHERE member_id IN (SELEC...

[Amazon](500310) Invalid operation: Overflow (Integer valid range -2147483648 to 2147483647)
Details: 
 -----------------------------------------------
  error:  Overflow (Integer valid range -2147483648 to 2147483647)
  code:      1207
  context:   Value: '2952163128494839000', Character: '8'
  query:     2748804
  location:  :0
  process:   query5_95_2748804 [pid=0]
  -----------------------------------------------;

Execution time: 2.11s
1 statement failed.

Я проверил и таблицуmembers не имеет memberid из 2952163128494839000.Я также пытался использовать функции CONVERT и CAST для преобразования memberid в integer, но я получил ту же ошибку.

Почему я сталкиваюсь с этой ошибкой и как мне ее исправить

1 Ответ

0 голосов
/ 05 июня 2018

Предположительно, у вас проблема со сравнением идентификатора участника.Я считаю маловероятным, чтобы у вас было достаточно дат, чтобы переполнить count(distinct).

. Преобразовать их в строки:

SELECT member_id,
       COUNT(DISTINCT TO_CHAR(created_at,'YYYY-MM-DD')) AS days
FROM ads.fbs_modality_staging
WHERE cast(member_id as varchar(255)) in (select cast(memberid as varchar(255)) from auth.members)
group by member_id
...