BigQuery: использовать результат INFORMATION_SCHEMA в запросе SELECT * EXCEPT (столбцы) для фильтрации дублированных столбцов - PullRequest
0 голосов
/ 29 марта 2020

Попытка найти перекрывающиеся столбцы между двумя таблицами и использовать результат в одном и том же запросе SQL.

Пример кода с двумя подзапросами, которые работают по отдельности, но не могут объединить их вместе:

WITH DIFF AS (
  SELECT column_name AS Columns
  -- SELECT ARRAY_AGG(column_name) AS Columns
  -- SELECT STRING_AGG(column_name) AS Columns
  FROM (
  SELECT column_name, 'S' AS S
  FROM DB.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS
  WHERE table_name = 'T1'
  INTERSECT DISTINCT
  SELECT column_name, 'S' AS S
  FROM DB.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS
  WHERE table_name = 'T2'
  )
  -- GROUP BY S
)

SELECT T1.*, T2.* EXCEPT(SELECT Columns FROM DIFF)
-- SELECT T1.*, T2.* EXCEPT (T1.*)
FROM DB.T1
LEFT JOIN DB.T2 USING(GUID)

Используя Python pandas, объединение очень просто из-за мощности суффиксов в случае дублированных столбцов, но в текущем SQL нам не хватает этой мощности.

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