0

Ich brauche SQL Query in Datenrahmen schreibenWie schreibt

SQL Query

A_join_Deals = sqlContext.sql("SELECT * FROM A_transactions LEFT 
JOIN Deals ON (Deals.device = A_transactions.device_id) WHERE 
A_transactions.device_id IS NOT NULL AND A_transactions.device_id != '' AND 
A_transactions.advertiser_app_object_id = '%s'"%(adv_id)) 

-Code geschrieben bisher

val A_join_Deals = Deals.join(A_transactions,Deals("device") === A_transactions("device_id"),"left") 

Jetzt bin ich fest, wie man die Where Clause schreibt.

Jeder Vorschlag oder Hilfe wird sehr geschätzt.

Antwort

1

können Sie versuchen, hier unten

val A_join_Deals = Deals.join(A_transactions,Deals("device") === A_transactions("device_id"),"left") 
     .where(A_transactions("device_id").isNotNull && A_transactions("device_id") =!= "" && A_transactions("advertiser_app_object_id") === s"${adv_id}") 
+0

Vielen Dank für Ihre Hilfe, aber wie Sie eine Variable übergeben [% (adv_id))]? in der Bedingung in Datenrahmen? – Bhavesh

+0

Sie können die Like-Funktion für Spark verwenden, die in% in% ähnlich ist. –

+0

@ShankarKoirala Danke für Ihren Vorschlag, aber wir wollen% sql sparksql nicht verwenden, da wir das Dataset als temporäre Tabelle registrieren müssen, die viel Speicher benötigt, da wir Daten in TeraByte haben – Bhavesh

1

ist, was Sie

where(A_transactions("device_id").isNotNull && 
    A_transactions("device_id") =!= "" && 
    A_transactions("advertiser_app_object_id") === s"${adv_id}%") 

tun können Dies funktioniert, wenn adv_id eine Variable und nicht die Spalte

Hoffnung, das hilft!