SQL のような IN 句を使用した Pyspark データフレームのフィルタリング: 構文エラーへの対処
SQL を使用して Pyspark データフレームをフィルタリングしようとしたときIN 句と同様に、IN 句の値が一重引用符で囲まれていない場合、構文エラーが発生する可能性があります。この問題を解決するには、SQL クエリで値を文字列として明示的に渡します。
解決策:
値をタプルとして直接指定する代わりに、文字列の書式設定を使用します。値を SQL クエリに組み込みます。例:
df = sqlc.sql("SELECT * FROM my_df WHERE field1 IN {}".format(str((1, 2, 3))))
このアプローチでは、値が SQL 環境のコンテキストで評価され、SQL パーサーによって正しく処理されることが保証されます。
代替アプローチ: Spark を使用するDataFrame API
Spark は、Dataframe API を通じて IN 句を使用して DataFrame をフィルターするより便利な方法も提供します。このアプローチは、その単純さと表現力の豊かさから一般に好まれます。
from pyspark.sql.functions import col df.where(col("field1").isin((1, 2, 3))).count()
ここで、 isin() 関数は引数としてタプルまたは配列を受け取り、field1 列の各値が入力リストに存在するかどうかをチェックします。 。このメソッドは簡潔であり、さまざまな強力なデータ操作操作を提供します。
以上がPyspark データフレームをフィルタリングするために IN 句を正しく使用する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。