在 table 中找不到字段 x,因为数据集包含 table 有和没有字段
Field x not found in table due to a dataset containing tables with and without the field
我有一个包含每日 tables 的数据集。
从给定日期开始,我在这些 table 中生成了一个新字段 x。
现在我想使用这个新字段通过 where 子句查询完整数据集。
示例:
SELECT field1 FROM
TABLE_DATE_RANGE_STRICT([mytable], DATE_ADD(TIMESTAMP("2016-01-11"), -7, "DAY"), TIMESTAMP("2016-01-11") )
WHERE x != null
不幸的是,我得到了Field x not found in table mytable20160105
,因为这个table确实没有这个字段。
有没有办法在不更新我的旧 table 的结构的情况下查询所有这些并在此字段上进行过滤?即 BigQuery 认为如果未定义该字段,则该字段应为 'null'
假设您在 2016-01-01 和 2016-01-04 之间有一个时间架构,然后您从 2016-01-05
添加了 extra/new 'x' 字段]
以下类型的查询可以解决您的问题
SELECT * FROM
(SELECT * FROM
TABLE_DATE_RANGE_STRICT([mytable], TIMESTAMP("2016-01-05"), TIMESTAMP("2016-01-07"))
),
(SELECT * FROM
TABLE_DATE_RANGE_STRICT([mytable], TIMESTAMP("2016-01-01"), TIMESTAMP("2016-01-04")),
)
WHERE NOT x IS NULL
同时,在这种特殊情况下,上面的查询没有多大意义,因为您事先知道第二个子查询没有任何结果,因此您可以使用下面的查询:
SELECT * FROM
TABLE_DATE_RANGE_STRICT([mytable], TIMESTAMP("2016-01-05"), TIMESTAMP("2016-01-07")
WHERE NOT x IS NULL
但我希望你的例子只是简化的例子,所以希望第一个选项对你来说仍然有意义,你可以利用它
同时,最好用旧模式修补一次表。它是免费的,为什么不呢?检查 Tables Patch API
我有一个包含每日 tables 的数据集。
从给定日期开始,我在这些 table 中生成了一个新字段 x。
现在我想使用这个新字段通过 where 子句查询完整数据集。 示例:
SELECT field1 FROM
TABLE_DATE_RANGE_STRICT([mytable], DATE_ADD(TIMESTAMP("2016-01-11"), -7, "DAY"), TIMESTAMP("2016-01-11") )
WHERE x != null
不幸的是,我得到了Field x not found in table mytable20160105
,因为这个table确实没有这个字段。
有没有办法在不更新我的旧 table 的结构的情况下查询所有这些并在此字段上进行过滤?即 BigQuery 认为如果未定义该字段,则该字段应为 'null'
假设您在 2016-01-01 和 2016-01-04 之间有一个时间架构,然后您从 2016-01-05
添加了 extra/new 'x' 字段]以下类型的查询可以解决您的问题
SELECT * FROM
(SELECT * FROM
TABLE_DATE_RANGE_STRICT([mytable], TIMESTAMP("2016-01-05"), TIMESTAMP("2016-01-07"))
),
(SELECT * FROM
TABLE_DATE_RANGE_STRICT([mytable], TIMESTAMP("2016-01-01"), TIMESTAMP("2016-01-04")),
)
WHERE NOT x IS NULL
同时,在这种特殊情况下,上面的查询没有多大意义,因为您事先知道第二个子查询没有任何结果,因此您可以使用下面的查询:
SELECT * FROM
TABLE_DATE_RANGE_STRICT([mytable], TIMESTAMP("2016-01-05"), TIMESTAMP("2016-01-07")
WHERE NOT x IS NULL
但我希望你的例子只是简化的例子,所以希望第一个选项对你来说仍然有意义,你可以利用它
同时,最好用旧模式修补一次表。它是免费的,为什么不呢?检查 Tables Patch API