Sql BigQuery中出现多个意外结果

Sql BigQuery中出现多个意外结果,sql,google-bigquery,Sql,Google Bigquery,我有一个相当大的查询,它将目标表中的多个表(事实表及其维度表)连接起来 事实数据表约为40M行 其形式如下: SELECT ... FROM ( SELECT ... FROM ( ... ) AS base LEFT JOIN dim_table_1 ON dim_table_1.field1 = base.field1 ) AS base2 LEFT JOIN dim_table_2 ON dim_table_2.field2 = base2.field2

我有一个相当大的查询,它将目标表中的多个表(事实表及其维度表)连接起来

事实数据表约为40M行

其形式如下:

SELECT
 ...
FROM (
  SELECT
   ...
  FROM (
    ...
  ) AS base
  LEFT JOIN  dim_table_1 ON dim_table_1.field1 = base.field1
) AS base2
LEFT JOIN dim_table_2 ON dim_table_2.field2 = base2.field2
我运行了两次查询,每次都是在几个小时的计算后失败的 以下是BigQuery UI中的日志:

Errors:
Unexpected. Please try again.
Job ID: job_bVDu4XlJSpWCIeLTfrWpOHVN5nU
Start Time: 2:38pm, 4 Dec 2013
End Time: 8:38pm, 4 Dec 2013
Destination Table: <destination_table>
Write Preference: Overwrite table
Allow Large Results: true
Priority: Batch
错误:
想不到的请再试一次。
作业ID:Job_bVDu4XlJSpWCIeLTfrWpOHVN5nU
开始时间:2013年12月4日下午2:38
结束时间:2013年12月4日下午8:38
目标表:
写入首选项:覆盖表
允许大的结果:true
优先级:批量
编辑:
关于如何优化查询或如何更改工作流以使其工作的任何提示?

我将在稍后详细介绍(您的查询中有很多内容--8个连接--因此可能需要进行一些挖掘才能找到问题)

最新的查询引擎版本在选择一个常量字段(请参阅)时有一个回归,您可能会遇到这个问题(即查询中的“MSEC_TO_TIMESTAMP(NOW()/1000)”可能会遇到这个问题)。我们今天应该发布一个修复程序

另一种可能是连接爆炸——即,您使用非唯一键进行连接,结果得到的行数比开始时多


正如我所提到的,当我有更多的时间时,我会进一步调查,并在调查后更新此答案。

你的问题是?我几乎可以肯定没有加入爆炸,但我会检查。谢谢你的更新。如果我为timestamp字段而不是MSEC_TO_timestamp(NOW()/1000)添加静态值,如
123456789
,它能解决问题吗?不幸的是,静态常量不会影响问题。我已删除了常量值,它起作用了。谢谢你的提示