当我在bigquery中运行此查询时
select jsonpayload.context.input.step
from `table_2019*`
回复为
“ STRUCT中[1:34]处不存在字段名称步骤”
但是,在其他表(例如table_20190101或table_20190102)上运行相同的查询时,效果很好
如何修复代码以显示所有结果而没有错误或忽略错误,谢谢。
答案 0 :(得分:2)
如何修复代码以显示所有结果而不会出现错误? 问题不在您的SQL代码中
您正在旧分区上运行查询,这意味着每个分区的物理结构可以不同。根据错误消息,这些分区中至少有一个分区没有 step 字段,而另一个分区没有。
选项1
找到这个的最简单方法是使用webUI的检阅分区结构并找到空白
选项2
如果您订阅了INFORMATION_SCHEMA Beta功能,则可以运行此查询来了解问题所在:
select * from `datasetId.INFORMATION_SCHEMA.COLUMNS`
where table_name like 'table%'
limit 100;
无论您如何使用unnset函数从 STRUCT 字段中进行选择,例如:
WITH `table` AS (
SELECT (ARRAY<STRUCT<x INT64, y STRING>>[(1, 'foo'), (3, 'bar')]) as arr
)
select x, y from (
select * from `table`, unnest(arr)
)