Удаление имен столбцов с использованием подстановочных знаков из таблицы больших запросов - PullRequest
0 голосов
/ 31 марта 2020

Я хочу создать новую таблицу из существующей (в большом запросе), исключая те столбцы, где имя столбца заканчивается на _scl. Использование кроме неосуществимо, так как есть почти 1000+ имен столбцов, заканчивающихся на _scl. Есть ли способ использовать подстановочный знак для устранения таких столбцов? Или любым другим способом?

1 Ответ

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

Это то, что я делаю для фильтрации / удаления / устранения столбцов в существующей таблице в интерфейсе BigQuery (UI). Тем не менее, я думаю, что это можно сделать автоматически с помощью скрипта python или другого языка программирования.

В любом случае, я хочу показать вам, как исключить эти столбцы, и я предоставляю запросы для создания таблицы без имени столбцов, которое вы не будете включать (отметьте столбец ctas_table_query ).

WITH
  schema_table_columns AS (
  SELECT
    STRING_AGG(column_name, ", "
    ORDER BY
      ordinal_position ASC) AS columns_only,
    STRING_AGG(CONCAT('  ', column_name), ", \n"
    ORDER BY
      ordinal_position ASC) AS columns_with_space,
    CONCAT(table_schema, '.', table_name) AS schema_table_name
  FROM
   "put_your_project_id_here"."put_your_dataset_here".INFORMATION_SCHEMA.COLUMNS
  WHERE
    table_name="put_your_table_name_here"
    AND column_name NOT LIKE '__put_your_condition_here'
  AND is_hidden = 'NO'
  GROUP BY
    schema_table_name)
SELECT
  concat ('CREATE OR REPLACE TABLE \n  ',
    RESULT.schema_table_name,
    ' AS \nSELECT \n',
    RESULT.columns_with_space,
    '\nFROM \n  ',
    RESULT.schema_table_name) AS ctas_table_query,
  RESULT.columns_only
FROM
  schema_table_columns AS RESULT
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...