Menapis Pyspark DataFrame dengan seperti SQL IN Klausa: Menangani Ralat Sintaks
Apabila cuba menapis Pyspark DataFrame menggunakan SQL- seperti klausa IN, anda mungkin menghadapi ralat sintaks jika nilai klausa IN tidak disertakan dalam satu petikan. Untuk menyelesaikan isu ini, hantar nilai secara eksplisit sebagai rentetan dalam pertanyaan SQL.
Penyelesaian:
Daripada menentukan nilai secara langsung sebagai tuple, gunakan pemformatan rentetan untuk memasukkan nilai ke dalam pertanyaan SQL. Contohnya:
df = sqlc.sql("SELECT * FROM my_df WHERE field1 IN {}".format(str((1, 2, 3))))
Pendekatan ini memastikan bahawa nilai dinilai dalam konteks persekitaran SQL dan dikendalikan dengan betul oleh penghurai SQL.
Pendekatan Alternatif: Menggunakan Spark API DataFrame
Spark juga menyediakan cara yang lebih mudah untuk menapis DataFrames menggunakan klausa IN melaluinya API bingkai data. Pendekatan ini biasanya lebih disukai kerana kesederhanaan dan ekspresifnya.
from pyspark.sql.functions import col df.where(col("field1").isin((1, 2, 3))).count()
Di sini, fungsi isin() mengambil tuple atau tatasusunan sebagai hujah dan menyemak sama ada setiap nilai dalam lajur medan1 terdapat dalam senarai input . Kaedah ini ringkas dan menawarkan rangkaian operasi manipulasi data yang berkuasa.
Atas ialah kandungan terperinci Bagaimana Menggunakan Klausa IN dengan Betul untuk Menapis DataFrames Pyspark?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!