Заполнение пробелов для столбца на основе другого столбца в BigQuery Standard SQL

У меня есть данные об артистах / певцах, и для каждого из них у меня есть следующие столбцы:

фб

инст

общий вес

звук

soundcloud_id

facebook ID

instagram_id

twitter_id

Для пояснения, "fb" означает Facebook, "inst" означает Instagram, "tw" означает Twitter, а "sound" означает Soundcloud.

Есть несколько строк (или исполнителей), в которых, например, 'fb' заполнено, но 'facebook_id' равно нулю. Кроме того, у меня также есть несколько строк, в которых "fb" является нулевым, но "facebook_id" заполнен. Это также относится и к другим столбцам.

Моя цель состоит в том, чтобы для каждого исполнителя обновить столбцы "fb", "tw", "sound" и "inst", заполнив пустые значения соответствующими значениями столбцов "facebook_id", "twitter_id", "soundcloud_id", и 'instagram_id'.

Например, если у меня есть:

inst instagram_id

NULL пример456

Я хочу:

inst instagram_id

example456 example456

ПРИМЕЧАНИЕ: я не хочу использовать UPDATE [COLUMN]. Причина в том, что эта таблица была создана только некоторыми подзапросами и манипулированием данными с использованием данных из моей базы данных. Другими словами, я на самом деле не сохранил свою текущую таблицу, поэтому я не могу использовать UPDATE [COLUMN]. Как бы я сделал это без ОБНОВЛЕНИЯ?

1 ответ

Решение

Ниже для BigQuery Standard SQL

#standardSQL
SELECT 
  IFNULL(fb, facebook_id) fb,
  IFNULL(inst, instagram_id) inst,
  IFNULL(tw, twitter_id) tw,
  IFNULL(sound, soundcloud_id) sound,
  soundcloud_id,
  facebook_id,
  instagram_id,
  twitter_id
FROM `project.dataset.table`
Другие вопросы по тегам