我有一个#StandardSQL查询
SELECT
CAST(created_utc AS STRING),
author,
FROM
`table`
WHERE
something = "Something"
这给我以下错误,
Error: Cannot read field 'created_utc' of type STRING as INT64
created_utc的示例是1517360483
如果我了解该错误,那么我显然不会。 created_utc存储了一个字符串,但是查询尝试将其转换为INT64失败。我希望CAST函数可以将其强制保持为字符串形式。
我做错了什么?
答案 0 :(得分:1)
问题是您实际上没有一个表。在您的问题中,您写了table
,但我怀疑您正在查询table*
,它与多个表匹配,其中一个表恰好具有该列的不同类型。除了使用table*
,您还可以选择:
_TABLE_SUFFIX
上的过滤器来跳过从某些表中的读取。答案 1 :(得分:1)
正如Elliott所指出的那样-您的某些值实际上不能转换为INT64,因为它们不表示整数,而是具有数字以外的其他字符
在SELECT下面使用您可以标识这些值,这样将有助于您查找有问题的条目,然后决定下一步的操作
#standardSQL
SELECT created_utc, author
FROM `table`
WHERE something = "Something"
AND NOT REGEXP_CONTAINS(created_utc , r'[0-9]')