2017-08-22 13 views
0

我實際上試圖將下面的SQL轉換爲pyspark。如何添加一列到pyspark數據框使用條件時,從不同的數據框中的所有條件

UPDATE table_a a, table_b b 
    SET a.flag=1 
    WHERE 
    (
    b.NOD=1 
    OR 
    (b.flag_3=1 AND b.flag_1=0 AND b.testingSold=0) 
    ) 
    AND b.uuid=a.uuid 

我試着下面的代碼,但它不工作:

table_a = table_a.withColumn("flag", F.when((table_b.NOD ==1) | (table_b.flag_3 == 1) & (table_b.flag_1==0) & table_a.uuid == table_b.uuid), F.lit(1)) 

什麼是做到這一點的正確方法?

回答

1

你可以做以下

from pyspark.sql import functions as F 
table_a.join(table_b, table_a.uuid == table_b.uuid).withColumn("flag", F.when((table_b.NOD ==1) | ((table_b.flag_3 == 1) & (table_b.flag_1==0) & (table_b.testingSold == 0), F.lit(1))) 
+0

不會表-B的所有列也是在這種情況下可見? – Viv

+0

除了條件語句 – Viv

+0

yes以外,我對table_b列中的任何一列都沒有用處。是的,table_b的所有列也都可見。如果邏輯後不需要table_b的列,那麼你可以簡單地刪除那些列:) –

相關問題