首页 > 解决方案 > 在 select() 中正确使用 when()

问题描述

我想使用 更改列中的数据.when()。我试过这样做:

x = (
    spark.table('my_table')
    .select(
        'date'
        'id',
        .when(sf.col('name') == 'x', 'One'),
        .when(sf.col('name') == 'y', 'Two'),
        .when(sf.col('name') == 'z', 'Three'),
)

不过,我的语法似乎是错误的。我知道在 SQL 中我可以达到同样的效果:

select
    date, id
    case
         when name = 'x' then 'One',
         when name = 'y' then 'Two',
         when name = 'z' then 'Three'
    end as name
from
    my_table

标签: pythonapache-sparkpysparkapache-spark-sql

解决方案


第一个when应该是sf.when,其他when的应该附加到第一个when

x = (
    spark.table('my_table')
    .select(
        'date'
        'id',
        sf.when(sf.col('name') == 'x', 'One')
        .when(sf.col('name') == 'y', 'Two')
        .when(sf.col('name') == 'z', 'Three')
        .alias('name')
    )
)

推荐阅读