列内の値を小文字に変換したいです。現在、メソッドを使用するとlower()
、列オブジェクトが呼び出し可能ではないというエラーが表示されます。SQL で呼び出される関数があるので、lower()
UDF を必要とせず、SQL を記述する必要もないネイティブの Spark ソリューションがあると思います。
ベストアンサー1
lower
一緒にインポートcol
:
from pyspark.sql.functions import lower, col
を使用してこれらを組み合わせますlower(col("bla"))
。完全なクエリでは次のようになります。
spark.table('bla').select(lower(col('bla')).alias('bla'))
これはSQLクエリと同等である
SELECT lower(bla) AS bla FROM bla
他の列を残すには、
spark.table('foo').withColumn('bar', lower(col('bar')))
言うまでもなく、このアプローチは UDF を使用するよりも優れています。UDF は Python を呼び出す必要があるため (これは低速な操作であり、Python 自体も低速です)、SQL で記述するよりもエレガントです。