web-dev-qa-db-ja.com

PysparkデータフレームLIKE演算子

PysparkのLIKE演算子に相当するものは何ですか?たとえば、私はやりたい:

SELECT * FROM table WHERE column LIKE "*somestring*";

このような簡単なものを探しています(ただし、これは機能していません):

df.select('column').where(col('column').like("*s*")).show()
13
Babu

whereおよびcol関数を使用して同じことを行うことができます。 whereは、条件に基づくデータのフィルタリングに使用されます(ここでは、列が_'%string%'_のような場合)。 col('col_name')は条件を表すために使用され、likeは演算子です。

_df.where(col('col1').like("%string%")).show()
_
27
braj

spark 2.0.0以降を使用しても正常に動作します。

df.select('column').where("column like '%s%'").show()

7
desaiankitb

Like演算子を使用します。

https://spark.Apache.org/docs/latest/api/python/pyspark.sql.html#module-pyspark.sql.functions

df.filter(df.column.like('%s%')).show()
4
Rahul

Pysparkでは、いつでもデータフレームをテーブルとして登録して照会できます。

df.registerTempTable('my_table')
query = """SELECT * FROM my_table WHERE column LIKE '*somestring*'"""
sqlContext.sql(query).show()
2
sau

まあ...正規表現のようなSQLがあるはずです->

df.select('column').where(col('column').like("%s%")).show()
2
Babu

大文字と小文字を区別しないILIKEを複製するには、lowerlikeと組み合わせて使用​​できます。

from pyspark.sql.functions import lower

df.where(lower(col('col1')).like("%string%")).show()
1
yardsale8

私は常に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')
0
Allen211