Конвертировать оператор SQL в PySpark - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть заявление в MySQL, что я пытаюсь преобразовать в PySpark:

my_table_name = default_engagements
UPDATE """ + my_table_name + """ SET Engagement = CASE WHEN LinkedAccountId IN ('123456778910', '1098765432123', '254325678912', '429576512356') THEN '808000000298' END WHERE Engagement IS NULL OR Engagement RLIKE '^[a-zA-Z]'; """

Я нашел этот пример в python spark:

from pyspark.sql import functions as F
update_func = (F.when(F.col('update_col') == replace_val, new_value)
                .otherwise(F.col('update_col')))

Но я нене знаю, как адаптировать это к вышеупомянутому SQL.Может кто-нибудь помочь мне с синтаксисом?Я хочу преобразовать новую информацию в DF, чтобы я мог записать новый DF в S3.

1 Ответ

1 голос
/ 23 сентября 2019

Это то, что вы ищете?

import pyspark.sql.functions as f
default_engagements = default_engagements.withColumn('Engagement', f.when((f.col('LinkedAccountId').isin('123456778910', '1098765432123', '254325678912', '429576512356'))&((f.col('Engagement').isNull())|(f.col('Engagement').rlike('^[a-zA-Z]'))), '808000000298').otherwise(f.col('Engagement'))
...