Как удалить столбец из таблицы Дельтабрик Дельта? - PullRequest
0 голосов
/ 31 января 2019

Я недавно начал обнаруживать блоки данных и столкнулся с ситуацией, когда мне нужно отбросить определенный столбец дельта-таблицы.Когда я работал с PostgreSQL, это было так просто, как

ALTER TABLE main.metrics_table 
DROP COLUMN metric_1;

Я просматривал Databricks документация на DELETE, но она покрывала только DELETE the rows that match a predicate.

Я также нашел документы по базе данных DROP, функции DROP и таблице DROP, но абсолютно ничего о том, как удалить столбец из дельта-таблицы.Что мне здесь не хватает?Существует ли стандартный способ удаления столбца из дельта-таблицы?

1 Ответ

0 голосов
/ 31 января 2019

В таблицах Databricks нет опции опускания столбцов: https://docs.databricks.com/spark/latest/spark-sql/language-manual/alter-table-or-view.html#delta-schema-constructs

Помните, что в отличие от реляционной базы данных в вашем хранилище есть физические файлы паркета, ваша "таблица" - это просто схема, к которой была применена схема.их.

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

Технически паркет может обрабатывать схемыЭволюция (см. Схема эволюции в формате паркета ).Но реализация Databricks Delta этого не делает.Вероятно, это слишком сложно, чтобы стоить того.

Поэтому решение в этом случае - создать новую таблицу и вставить столбцы, которые вы хотите сохранить из старой таблицы.

...