我正在运行一个复杂的BigQuery查询,这会给我带来奇怪的错误。我有三个大表的嵌套连接,并且使用table_date_range()为其中一个表包含了几个分区。
当最里面的select子句包含太多分区时,我意外地得到以下错误,即使查询中没有名为job_id的字段。如果我只包含一个或有时两个分区(取决于大小?),那么查询就可以了。
错误:字段' job_id'表格'项目中没有找到:dataset.table_20160119&#39 ;;你是说' app_id'?
由于敏感数据,我无法发布完整查询,但结构如下:
SELECT
fields
FROM (
SELECT
*
FROM (
SELECT
*
FROM (
SELECT *
FROM
TABLE_DATE_RANGE([project1:dataset1.table1_],
TIMESTAMP('2016-01-19'),
TIMESTAMP('2016-01-24'))
WHERE
conditions
) alias_1
) alias_2
FULL OUTER JOIN EACH (
SELECT
*
FROM
[project2:dataset2.table2_20160124]
WHERE
conditions
) alias3
ON alias2.user_id = alias3.user_id
) alias4
LEFT JOIN
[project2:dataset3.table3_20160124] alias5
ON
alias4.user_id = alias5.user_id
GROUP BY
fields
ORDER BY
field
答案 0 :(得分:1)
所以我找到了解决方案。显然,在我使用的日期范围内,table1
中存在架构更改,并且字段job_id
仅在某些日期存在。即使不使用此字段,也会使BigQuery抛出错误。
通过为受影响的表手动选择列而不是使用*。
来解决问题