Databricks Merge报错及视图转Delta表、建表无结果问题求助
问题解决步骤
1. 关于CREATE TABLE ... AS SELECT显示“Query returned no results”的说明
这个提示完全正常,CREATE TABLE AS SELECT(CTAS)语句的作用是创建表并将查询结果写入该表,本身不会返回查询数据。你需要执行以下语句验证表是否成功创建并包含数据:
SELECT * FROM basef1area.races_delta LIMIT 10;
2. 将视图转为Delta表的正确流程
步骤1:确认目标对象类型
先确认basef1area.races是视图,执行:
DESCRIBE EXTENDED basef1area.races;
查看输出中的Type字段,确认是VIEW。
步骤2:直接从视图创建Delta表
不需要先创建普通表再转换,用CTAS语句直接生成Delta格式的物理表:
CREATE TABLE basef1area.races_delta USING DELTA AS SELECT * FROM basef1area.races;
这条语句会自动完成数据落地,并创建Delta格式的表。
可选:若已创建普通表,转为Delta表
如果之前已经用不带USING DELTA的语句创建了普通表,执行以下语句转换为Delta表:
CONVERT TO DELTA basef1area.races_delta;
⚠️ 注意:CONVERT TO DELTA仅支持物理表,不支持视图,这也是你之前执行该语句报错的原因。
3. 修复MERGE操作
将MERGE的目标替换为刚创建的Delta表,执行:
CREATE OR REPLACE TEMP VIEW rs AS SELECT *, ROW_NUMBER() OVER (ORDER BY rand()) AS seq FROM basef1area.drivers; MERGE INTO basef1area.races_delta AS t USING rs ON t.race_ID = rs.seq WHEN MATCHED THEN UPDATE SET t.reject_reason = rs.driver_ID;
内容的提问来源于stack exchange,提问作者Patterson
相关产品推荐
相关产品推荐

