Как запросить тип структуры в bigquery без «Шаг имени поля не существует в STRUCT»? - PullRequest
1 голос
/ 22 апреля 2019

Когда я запускаю этот запрос в большом запросе

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

ответом является

"Шаг имени поля не существует в STRUCT в [1:34]"

Однако, при выполнении того же запроса в других таблицах, таких как table_20190101 или table_20190102, он работал нормально

Как я могу исправить свой код, чтобы он отображал все результаты без ошибок или игнорировал ошибку, спасибо.

1 Ответ

2 голосов
/ 22 апреля 2019

Как я могу исправить свой код, чтобы показать все результаты без ошибок?Проблема не в вашем коде SQL

Вы выполняете запрос на старом разделе, что означает, что физическая структура каждого раздела может отличаться.На основании сообщения об ошибке, по крайней мере, один из этих разделов не имеет поля step , а другой -.

Вариант 1
Самый простой способ найти это - использовать веб-интерфейс структуры обзора и найти пробел

enter image description here

Вариант 2

Если вы подписаны на INFORMATION_SCHEMA бета-функцию, вы можете запустить этот запрос, чтобы понять, в чем проблема:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...