PysparkのLIKE演算子に相当するものは何ですか?たとえば、私はやりたい:
SELECT * FROM table WHERE column LIKE "*somestring*";
このような簡単なものを探しています(ただし、これは機能していません):
df.select('column').where(col('column').like("*s*")).show()
where
およびcol
関数を使用して同じことを行うことができます。 where
は、条件に基づくデータのフィルタリングに使用されます(ここでは、列が_'%string%'
_のような場合)。 col('col_name')
は条件を表すために使用され、like
は演算子です。
_df.where(col('col1').like("%string%")).show()
_
spark 2.0.0以降を使用しても正常に動作します。
df.select('column').where("column like '%s%'").show()
Like演算子を使用します。
https://spark.Apache.org/docs/latest/api/python/pyspark.sql.html#module-pyspark.sql.functions
df.filter(df.column.like('%s%')).show()
Pysparkでは、いつでもデータフレームをテーブルとして登録して照会できます。
df.registerTempTable('my_table')
query = """SELECT * FROM my_table WHERE column LIKE '*somestring*'"""
sqlContext.sql(query).show()
まあ...正規表現のようなSQLがあるはずです->
df.select('column').where(col('column').like("%s%")).show()
大文字と小文字を区別しないILIKE
を複製するには、lower
をlike
と組み合わせて使用できます。
from pyspark.sql.functions import lower
df.where(lower(col('col1')).like("%string%")).show()
私は常にUDFを使用してこのような機能を実装しています。
from pyspark.sql import functions as F
like_f = F.udf(lambda col: True if 's' in col else False, BooleanType())
df.filter(like_f('column')).select('column')