我有一个非常庞大的查询,它将多个表(事实表及其维度表)连接到目标表中。
事实表大约是 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
编辑: 有关如何优化查询或工作流程更改的任何提示都可以使用吗?
答案 0 :(得分:1)
稍后我会再看一下这个问题(你的查询中有很多事情发生了 - 8个连接 - 所以可能需要花一点时间才能找到问题)。
最新的查询引擎版本在选择常量字段(请参阅Google BigQuery: "Unexpected" error while limiting rows)时有一个回归,您可能正在点击(即“MSEC_TO_TIMESTAMP(NOW()/ 1000)”,查询可能会遇到此问题问题)。我们今天应该为此解决这个问题。
另一种可能性是你有一个连接爆炸 - 即你加入非唯一键并最终得到比你开始时更多的行。
正如我所提到的,当我有更多时间时,我会进一步调查,当我这样做时,我会更新这个答案。