ЕСЛИ поле существует в StandardSQL - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть таблица с этими столбцами:

  1. Яблоки
  2. Бананы
  3. Персики - однако этот столбец может появляться или не появляться. Таблица сбрасывается и загружается каждые 5 часов, и мне нужно быть готовым к ситуации, когда столбец «Персики» недоступен.

Я нашел пару похожих вопросов здесь, в StackOverflow, но все они использовали LegacySQL. чтобы решить проблему.

Я пытался что-то вроде этого:

SELECT * FROM project.dataset.fruits

WHERE EXISTS (SELECT персики из project.dataset.fruits)

Код дает мне понять, что «персики» - это неизвестное имя, если в таблице «фрукты» в данный момент нет столбца и весь запрос не выполнен.

Есть идеи, как обойти это?

Ответы [ 2 ]

0 голосов
/ 06 ноября 2019

Вы можете использовать INFORMATION_SCHEMA

SELECT
 1
FROM
 `project.dataset.INFORMATION_SCHEMA.COLUMNS
WHERE
 table_name="fruits" AND column_name="peaches"
0 голосов
/ 06 ноября 2019

Ниже для BigQuery Standard SQL

#standardSQL
SELECT * FROM `project.dataset.fruits`
WHERE EXISTS (
  SELECT 1 FROM `project.dataset.fruits` t
  WHERE REGEXP_CONTAINS(TO_JSON_STRING(t), '[{,]"peaches":')
  LIMIT 1
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...