在没有“字段名称步骤在STRUCT中不存在”的情况下,如何在bigquery中查询结构类型?

时间:2019-04-22 05:42:07

标签: sql struct google-bigquery

当我在bigquery中运行此查询时

select jsonpayload.context.input.step
from `table_2019*`

回复为

  

“ STRUCT中[1:34]处不存在字段名称步骤”

但是,在其他表(例如table_20190101或table_20190102)上运行相同的查询时,效果很好

如何修复代码以显示所有结果而没有错误或忽略错误,谢谢。

1 个答案:

答案 0 :(得分:2)

  

如何修复代码以显示所有结果而不会出现错误?   问题不在您的SQL代码中

您正在旧分区上运行查询,这意味着每个分区的物理结构可以不同。根据错误消息,这些分区中至少有一个分区没有 step 字段,而另一个分区没有。

选项1
找到这个的最简单方法是使用webUI的检阅分区结构并找到空白

enter image description here

选项2

如果您订阅了INFORMATION_SCHEMA Beta功能,则可以运行此查询来了解问题所在:

select * from `datasetId.INFORMATION_SCHEMA.COLUMNS`
where table_name like 'table%'
limit 100;

enter image description here

无论您如何使用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)
)

enter image description here