Sql BigQuery中出现多个意外结果
我有一个相当大的查询,它将目标表中的多个表(事实表及其维度表)连接起来 事实数据表约为40M行 其形式如下: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
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
,它能解决问题吗?不幸的是,静态常量不会影响问题。我已删除了常量值,它起作用了。谢谢你的提示