一尘不染

如何从Databricks Delta表中删除列?

sql

我最近开始发现Databricks,并遇到需要删除增量表中某一列的情况。当我使用PostgreSQL时,就像

ALTER TABLE main.metrics_table 
DROP COLUMN metric_1;

我在浏览有关DELETE的Databricks文档,但仅涉及DELETE the rows that match a predicate

我还找到了关于DROP数据库,DROP函数和DROP表的文档,但是关于如何从增量表中删除列的内容却一无所获。我在这里想念什么?有没有从删除表中删除列的标准方法?


阅读 198

收藏
2021-05-23

共1个答案

一尘不染

Databricks表上没有下拉列选项:https
://docs.databricks.com/spark/latest/spark-sql/language-manual/alter-table-or-
view.html#delta-schema-
constructs

请记住,与关系数据库不同,您的存储中没有物理拼花文件,您的“表”只是已应用于它们的架构。

在关系世界中,您可以更新表元数据以轻松删除列,而在大数据世界中,您必须重新编写基础文件。

从技术上讲,镶木地板可以处理架构演变。但是Delta的Databricks实现却没有。它可能太复杂了,不值得。

因此,在这种情况下,解决方案是创建一个新表并插入要保留在旧表中的列。

2021-05-23