如何在PySpark中实现类似Snowflake/SQL的布尔值列查询功能?
PySpark 实现等值判断返回布尔列的方法
你想要的效果可以用以下几种写法实现,核心逻辑是对列对象做等值判断后取别名,判断结果本身就是布尔类型,也可以显式cast增强可读性:
- 基础写法(需先导入列函数):
from pyspark.sql.functions import col # 无需额外cast,等值判断返回的原生就是布尔类型 result_df = my_df.select((col("my_col") == "yes").alias("is_my_col"))
- 符合你原有思路的显式cast写法:
from pyspark.sql.functions import col result_df = my_df.select((col("my_col") == "yes").cast("bool").alias("is_my_col"))
- 不想额外导包的简化写法:
# 写法1:用DataFrame属性引用列 result_df = my_df.select((my_df.my_col == "yes").alias("is_my_col")) # 写法2:用中括号引用列 result_df = my_df.select((my_df["my_col"] == "yes").alias("is_my_col"))
你可以执行result_df.printSchema()验证字段类型,会看到is_my_col的类型为BooleanType,和Snowflake SQL的返回结果完全一致。
注意:PySpark中等值判断必须用双等号
==,单等号为赋值操作,会报错。
内容的提问来源于stack exchange,提问作者amggg013
相关产品推荐
相关产品推荐

