В ролях в Google BigQuery не подходит? - PullRequest
0 голосов
/ 04 июля 2018

У меня запрос #StandardSQL

 SELECT
    CAST(created_utc AS STRING),
    author,
 FROM
    `table`
 WHERE
   something = "Something"

, которая дает мне следующую ошибку,

Error: Cannot read field 'created_utc' of type STRING as INT64

Примером create_utc является 1517360483

Если я понимаю эту ошибку, чего я явно не понимаю. made_utc хранит строку, но запрос безуспешно пытается преобразовать ее в INT64. Я бы надеялся, что функция CAST заставит ее храниться в виде строки.

Что я сделал не так?

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Как уже указывал Эллиотт - некоторые из ваших значений на самом деле не могут быть преобразованы в INT64, потому что они не представлены целыми числами и скорее имеют некоторые другие символы, чем цифры

Используя ниже SELECT, вы можете идентифицировать такие значения, чтобы помочь вам найти проблемные записи и принять решение о следующих действиях

#standardSQL
SELECT created_utc, author
FROM `table`
WHERE something = "Something"
  AND NOT REGEXP_CONTAINS(created_utc , r'[0-9]')
0 голосов
/ 04 июля 2018

Проблема в том, что у вас нет ни одной таблицы. В своем вопросе вы написали table, но я подозреваю, что вы запрашиваете table*, что соответствует нескольким таблицам, в которых одна из них имеет другой тип для этого столбца. Вместо использования table*, вы можете:

  • Используйте UNION ALL с отдельными таблицами, предварительно выполняя приведение в соответствующих списках SELECT.
  • Если вы знаете, какие таблицы имеют этот столбец как INT64 вместо STRING, и вы можете исключить их, вы можете использовать фильтр на _TABLE_SUFFIX, чтобы пропустить чтение из определенных таблиц.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...