Question: I want to filter a Pyspark DataFrame with a SQL-like `IN` clause, as in

```
sc = SparkContext()
sqlc = SQLContext(sc)
df = sqlc.sql('SELECT * from my_df WHERE field1 IN a')

```

where `a` is the tuple `(1, 2, 3)`. I am getting this error:

> 
> java.lang.RuntimeException: [1.67] failure: ``('' expected but identifier a found
> 
> 
> 

which is basically saying it was expecting something like *'(1, 2, 3)'* instead of a.
The problem is I can't manually write the values in a as it's extracted from another job.

How would I filter in this case?

Answer: 
reiterating what @zero323 has mentioned above : we can do the same thing using a **list as well (not only `set`)** like below

```
from pyspark.sql.functions import col

df.where(col("v").isin(["foo", "bar"])).count()

```
You can also do this for integer columns:

```
df_filtered = df.filter("field1 in (1,2,3)")

```

or this for string columns:

```
df_filtered = df.filter("field1 in ('a','b','c')")

```