【发布时间】:2017-04-30 00:29:25
【问题描述】:
使用标准 SQL 在 Bigquery 中运行此简单查询时出现以下错误:
SELECT MIN(created) as mm FROM `projectId.ds.User`
创建的列的类型为 cloud.helix.Timestamp,与预期的 INT64 Dismiss 类型不同 撰写查询
创建的字段具有数据类型 Timestamp,可以为空,但不包含空值。
此查询在旧版 SQL 中有效:
SELECT MIN(created) as mm FROM [projectId:ds.User]
有什么建议吗?
【问题讨论】:
-
两者是否使用相同的时间戳数据类型?如果在 legacy 中使用 DT 字符串来存储 1970 年之前的日期,那么现在使用 Unix 将引发错误...
-
表格是一样的。事实上,只有一个名为 User 的表,但访问它的语法不同。使用 BigQuery,您可以设置一个标志“使用旧版 SQL”来切换查询语法。正在使用完全相同的 TIMESTAMP 数据类型(据我作为用户所知)。
-
更令人毛骨悚然的是,我可以在我的另一个表上运行现代 SQL 查询而不会出错,该表具有相同的已创建字段,数据类型为 TIMESTAMP 且可为空。
-
你试过
select min(cast(created as Date)) as mm吗?如果那个摔倒了,可能是一块 duff 数据 -
某些东西正在生成标准 SQL 引擎不希望看到的遗留时间戳表示。您可能想给the issue on the public tracker加注星标以获取更新,当我知道更多信息时,我也会尝试在这里跟进。
标签: sql google-bigquery