当我执行以下代码片段时,df1显示无结果。当我用“1,2,3,...”代替野性字符“*”时,df1显示值。我错过了什么?
from __future__ import print_function
import sys
from pyspark import SparkContext
from pyspark.sql import SQLContext
from pyspark.sql import DataFrame
import pyspark.sql.functions
.
.
.
df1= df.filter(df.DATE == "*162014").filter(df.TMC == "111N04908")\
.sort(df.EPOCH.asc())
答案 0 :(得分:2)
只有==
意味着它等于 - 仅此而已。它不使用通配符,正则表达式或SQL模式。如果您想使用模式,请使用LIKE
或RLIKE
。
expr("DATE RLIKE '%162014'")
expr("DATE LIKE '*162014'")
答案 1 :(得分:1)
这应该有效
df1 = df.filter(df.DATE.rlike('*162014'))
.filter(df.TMC == "111N04908")
.sort(df.EPOCH.asc())
其中或过滤两者是相同的
df1 = df.where(df.DATE.rlike('*162014'))
.where(df.TMC == "111N04908")
.sort(df.EPOCH.asc())