如何从 pyspark sql 上的大表中选择除其中 2 之外的所有列?

use*_*011 3 python sql hive apache-spark pyspark

在连接两个表时,我想从一个大表中选择除其中 2 列之外的所有列,该大表在 databricks 上的 pyspark sql 上有许多列。

我的 pyspark sql:

 %sql
 set hive.support.quoted.identifiers=none;
 select a.*, '?!(b.year|b.month)$).+'
 from MY_TABLE_A as a
 left join 
      MY_TABLE_B as b
 on a.year = b.year and a.month = b.month 
Run Code Online (Sandbox Code Playgroud)

我按照 配置单元:选择所有列排除两个 配置单元如何选择除一列之外的所有列?

但是,它对我不起作用。所有列都在结果中。我想删除重复的列(结果中的年份和月份)。

谢谢

Dav*_*dox 8

从 Databricks Runtime 9.0 开始,您可以使用* except()如下命令:

df = spark.sql("select a.* except(col1, col2, col3) from my_table_a...")
Run Code Online (Sandbox Code Playgroud)

或者如果只是像您的示例中那样使用 %sql

select a.* except(col1, col2, col3) from my_table_a...
Run Code Online (Sandbox Code Playgroud)