【发布时间】:2021-03-23 18:11:24
【问题描述】:
我试图让 if else 语句以 when() 和 otherwise() 函数的形式工作。我尝试了很多方法,但我的问题是when() 语句需要一个列。有没有办法让以下代码以when() 和otherwise() 格式工作?
get_data = spark.sql("SELECT STRING({}) AS {} FROM {} WHERE Mobile='{}'".format(dynamic_tag_mapping_column_name, match[0], dynamic_tag_mapping_table_name, mobile_numbers[mob])).collect()[0][0]
if get_data!='0':
textList.append(campaign_segment_text.withColumn('CampaignSMSText', func.expr("regexp_replace(CampaignSMSText, '{}', {})".format(match[0], get_data)))
else:
textList.append(campaign_segment_text.withColumn('CampaignSMSText', func.expr("regexp_replace(CampaignSMSText, '{}', {})".format(match[0], dynamic_default_value)))
我想要实现的是,如果我从数据库中获取get_data>0 值,它将采用get_data 值,但如果get_data=0,它将分配一个已设置的默认值。我尝试将 String 值设置为从 DB 获取的 Int 值,但无法比较,因为 get_data 不是列。有没有办法让这个工作?
【问题讨论】:
标签: apache-spark pyspark apache-spark-sql regexp-replace