Нераспознанное имя «столбец» при использовании _TABLE_SUFFIX в BigQuery - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть следующий набор данных BigQuery:

Набор таблиц с именем keywords_ab, keywords_ac, ..., keywords_zz.

Другой набор таблиц с именем keywords_different_schema_ab, keywords_different_schema_ac, ...

Эти два набора таблиц имеют разные схемы. Я хотел бы выполнить запрос к первому набору таблиц, который содержит столбец с именем term, который не содержится в keywords_different_schema_*.

Обычно такие запросы выполнялись с использованием синтаксиса FROM 'keywords_*' но это дает мне, конечно, Unrecognized name 'term', потому что столбец term не является частью всех таблиц keywords_different_schema_*.

Я также пытался вставить в свой запрос что-то вроде LENGTH(_TABLE_SUFFIX) = 2, но, похоже, он не работает нормально. Есть ли способ, чтобы подстановочный знак работал в этом случае? Или мне действительно нужно UNION выбрать вручную все ключевые слова, которые меня интересуют?

Ответы [ 2 ]

1 голос
/ 30 апреля 2020

Оказывается, есть способ решить эту проблему без переименования таблиц (хотя это довольно хакерский способ).

Очевидно, BigQuery просматривает последнюю созданную вами таблицу, которая соответствует Подстановочный знак.

Я создал новую таблицу с именем keywords_dummy и дал им ОБЪЕДИНЕНИЕ всех атрибутов keywords и keywords_different_schema.

На этом этапе мой запрос SELECT term FROM 'keywords_*' WHERE LENGTH(_table_suffix)=2 работал, так как BigQuery проверял эту таблицу keywords_dummy со столбцом term.

0 голосов
/ 30 апреля 2020

Вы можете добавить предложение WHERE к вашему запросу, чтобы исключить любые данные из таблиц, которые вы вынуждены выбрать, например:

SELECT * 
FROM 'keywords_*
WHERE _table_suffix NOT LIKE "%_different_schema_%"

Это исключит любую таблицу, в которой суффикс содержит текст _different_schema_ в любом месте имени.

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

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