Pyspark数据框LIKE运算符

时间:2016-10-24 14:25:50

标签: pyspark spark-dataframe

LIKE运算符在Pyspark中的等价物是什么? 例如,我想这样做:

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

寻找像这样简单的东西(但这不起作用):

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

9 个答案:

答案 0 :(得分:24)

您可以使用wherecol功能执行相同操作。 where将用于根据条件过滤数据(此处,如果列类似'%string%')。 col('col_name')用于表示条件,like是运算符:

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

答案 1 :(得分:7)

使用spark 2.0.0以后也可以正常工作:

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

答案 2 :(得分:3)

使用like运算符。

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

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

答案 3 :(得分:2)

嗯......应该有像regexp这样的sql - >

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

答案 4 :(得分:1)

在pyspark中,您始终可以将数据框注册为表格并进行查询。

con.Open();
SqlCommand cmd1 = new SqlCommand("ePMT_SP_BindSupplierDDLToTextBox", con);
cmd1.Parameters.Add(new SqlParameter("@SupplierEmail",ddlSupplier.SelectedItem));
SqlDataReader datareader = cmd.ExecuteReader(); 
while(datareader.Read())
{
    txtSupplierEmail.Text = datareader["SupplierEmail"].ToString();
}

答案 5 :(得分:1)

要复制不区分大小写的ILIKE,可以将lowerlike结合使用。

from pyspark.sql.functions import lower

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

答案 6 :(得分:0)

我总是使用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')

答案 7 :(得分:0)

使用spark 2.4来否定,您只需执行以下操作:

df = df.filter("column not like '%bla%'")

答案 8 :(得分:0)

这对我有用:

import pyspark.sql.functions as f
df.where(f.col('column').like("%x%")).show()