Unexpected BigQuery "Error: Field 'job_id' not found in table" even if job_id is not used

Unexpected BigQuery "Error: Field 'job_id' not found in table" even if job_id is not used

我是 运行 一个复杂的 BigQuery 查询,它给我带来了奇怪的错误。我已经嵌套连接了三个大表,并且使用 table_date_range().

为其中一个表包含了几个分区

当最里面的 select 子句包含太多分区时,我意外地收到以下错误,即使查询中的任何地方都没有名为 job_id 的字段.如果我只包括一个或有时两个分区(取决于大小?),查询就可以正常工作。

Error: Field 'job_id' not found in table 'project:dataset.table_20160119'; did you mean 'app_id'?

由于敏感数据,我无法post完整查询,但结构如下:

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

所以我找到了解决办法。显然,在我使用的日期范围内,table1 中的模式发生了变化,字段 job_id 仅在某些日期存在。即使不使用该字段,它也会使 BigQuery 抛出错误。

问题已通过为受影响的 table 手动选择列而不是使用 *.

解决