You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求SAS合并表DATA步代码对应的Spark SQL等价实现

SAS到Spark SQL的等价转换:纵向拼接表

原SAS代码的作用

这段SAS代码是将SOURCE_TABLE1和SOURCE_TABLE2纵向拼接(上下合并所有行)生成新表NEW_TABLE。如果两个源表列名/列数不一致,SAS会自动为缺失的列填充缺失值(.)。

Spark SQL等价实现

情况1:两个表列完全匹配(列名、顺序、数据类型一致)

直接使用UNION ALL(保留所有行,包括重复行,和SAS原逻辑完全一致):

CREATE TABLE NEW_TABLE AS
SELECT * FROM SOURCE_TABLE1
UNION ALL
SELECT * FROM SOURCE_TABLE2;

情况2:两个表列不一致(列名/列数不同)

需要手动对齐列,用NULL填充缺失的列,模拟SAS自动补缺失值的行为:
假设SOURCE_TABLE1包含col1、col2,SOURCE_TABLE2包含col1、col3,示例代码如下:

CREATE TABLE NEW_TABLE AS
SELECT col1, col2, NULL AS col3 FROM SOURCE_TABLE1
UNION ALL
SELECT col1, NULL AS col2, col3 FROM SOURCE_TABLE2;

注意事项

  • Spark SQL要求拼接的结果集必须列数相同、对应列数据类型兼容,列不一致时必须手动补全
  • 务必使用UNION ALL而非UNION:UNION会自动去重,和SAS原代码保留所有重复行的逻辑不符
  • 如果仅需创建临时表,可将CREATE TABLE替换为CREATE TEMPORARY VIEW

内容的提问来源于stack exchange,提问作者Ram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 19:22:08