【发布时间】:2017-04-14 14:22:16
【问题描述】:
#standardSQL
SELECT
blockchain.num_tx AS `num_tx`,
blockchain.timestamp AS `timestamp`,
GDELT.GLOBALEVENTID AS GLOBALEVENTID,
PARSE_TIMESTAMP('%Y%m%d', CAST(GDELT.SQLDATE AS STRING)) AS SQLDATE,
GDELT.Actor1Code AS Actor1Code,
GDELT.Actor1Name AS Actor1Name,
GDELT.Actor2Code AS Actor2Code,
GDELT.Actor2Name AS Actor2Name,
GDELT.AvgTone AS AvgTone,
GDELT.SOURCEURL AS SOURCEURL
FROM
w205_final_project.blockchain_data AS blockchain
INNER JOIN
w205_final_project.GDELT AS GDELT
ON
blockchain.timestamp = GDELT.SQLDATE
返回以下内容:
错误:对于参数类型的运算符 = 没有匹配的签名: 时间戳,INT64。支持的签名:ANY = ANY at [18:3]
GDELT.SQLDATE 列数据以整数格式开头,如YYYYMMDD;
blockchain.timestamp 列以timestamp 格式开头,例如:
2015-01-01 04:29:21 UTC
【问题讨论】:
-
SQLDate 的类型是什么?你想用它做什么?
-
SQLDATE 最初是一个整数。那条线工作正常; sqldate 被转换为字符串,然后根据我的需要转换为时间戳。给我带来麻烦的是 blockchain.timestamp 行。我想在最后加入这两个时间戳格式的列(名为时间戳的列确实已经是时间戳格式)。
-
显示错误信息!并展示
GDELT.SQLDATE和blockchain.timestamp的几个示例 - 下面的链接可以帮助您 - 如何显示您遇到问题的代码的Minimal, Complete, and Verifiable example 和How to Ask。 -
完成,谢谢,看来我没有成功地将 SQLDATE 转换为时间戳格式。请指教:)
-
operator = for argument types: TIMESTAMP, INT64=> 好的,这就是我在回答中解释的内容,您加入(INT) GDELT.SQLDATE而不是您在选择中生成的(TIMESTAMP) GDELT.SQLDATE,所以加入不知道什么去做
标签: sql google-bigquery