左侧和功能 - PySpark SQL
LEFT and In Function - PySpark SQL
我正在尝试在 PySpark 中转换以下 SQL 查询,但不知何故它不起作用。
SELECT
Distinct *
FROM Dataset
where left(PAT,3) in ('123','203')
我已经在 pySpark 中转换了如下所示的查询
df_data=PAT_Data
df_data.where(df_data.PAT.substr(1,3)='123').show
OR
df_data.filter(col("PAT").like("123%")).show()
有什么想法吗?
谢谢。
取PAT
列的子串后可以使用isin
运算符:
df_data = spark.createDataFrame([['123221'], ['2321'], ['123221'], ['20322']], ['PAT'])
df_data.show()
+------+
| PAT|
+------+
|123221|
| 2321|
|123221|
| 20322|
+------+
df_data.where(df_data.PAT.substr(1,3).isin(['123', '203'])).show()
+------+
| PAT|
+------+
|123221|
|123221|
| 20322|
+------+
删除重复项:
df_data.where(df_data.PAT.substr(1,3).isin(['123', '203'])).dropDuplicates().show()
+------+
| PAT|
+------+
| 20322|
|123221|
+------+
检查以下是否适合您:
df_data.where('PAT like "123%"').show()
df_data.where('PAT rlike "^(123|203)"').distinct().show()
df_data.where('substr(PAT,1,3) in (123,203)').distinct().show()
顺便说一句。在 spark.sparkContext.version = '2.2.1'
上测试
我正在尝试在 PySpark 中转换以下 SQL 查询,但不知何故它不起作用。
SELECT
Distinct *
FROM Dataset
where left(PAT,3) in ('123','203')
我已经在 pySpark 中转换了如下所示的查询
df_data=PAT_Data
df_data.where(df_data.PAT.substr(1,3)='123').show
OR
df_data.filter(col("PAT").like("123%")).show()
有什么想法吗?
谢谢。
取PAT
列的子串后可以使用isin
运算符:
df_data = spark.createDataFrame([['123221'], ['2321'], ['123221'], ['20322']], ['PAT'])
df_data.show()
+------+
| PAT|
+------+
|123221|
| 2321|
|123221|
| 20322|
+------+
df_data.where(df_data.PAT.substr(1,3).isin(['123', '203'])).show()
+------+
| PAT|
+------+
|123221|
|123221|
| 20322|
+------+
删除重复项:
df_data.where(df_data.PAT.substr(1,3).isin(['123', '203'])).dropDuplicates().show()
+------+
| PAT|
+------+
| 20322|
|123221|
+------+
检查以下是否适合您:
df_data.where('PAT like "123%"').show()
df_data.where('PAT rlike "^(123|203)"').distinct().show()
df_data.where('substr(PAT,1,3) in (123,203)').distinct().show()
顺便说一句。在 spark.sparkContext.version = '2.2.1'
上测试