我有两种可能从两个不同的表中获取数据:表A和表B。
表B没有一列(ColumnD(,所以我想保留完整的模式
我尝试过使用Python(Spark(:
#input argument
table_argument = 'B'
spark.sql(f'''
SELECT
ColumnA,
ColumnB,
ColumnC,
CASE
WHEN '{table_argument}' = 'B' THEN NULL
ELSE ColumnD
END AS ColumnD
FROM {table_argument}''')
我总是得到错误,这是不可能得到的列D。When条件不起作用。
有可能这样做吗?
感谢
即使在未执行的WHEN
子句中,也不能引用不存在的列。您需要使用Python条件来构造查询的该部分。
spark.sql(f'''
SELECT
ColumnA,
ColumnB,
ColumnC,
{'NULL' if table_argument == 'B' else 'ColumnD'} AS ColumnD
FROM {table_argument}''')