我想对ABC的组织中的人员和ABC的分支名称进行过滤:
people.filter(" orgnization = ABC\'S and branch like '%ABC\'S%' ").show()
这是我得到的错误
Py4JJavaError: An error occurred while calling o47.filter.
: java.lang.RuntimeException: [1.18] failure: identifier expected
答案 0 :(得分:0)
你应该:
让我们通过例子解释一下。这是数据:
df = sc.parallelize([("ABC'S", "FOO ABC'S")]).toDF(["organization", "branch"])
如果您决定使用单引号,则必须转义嵌入式引号以及反斜杠。
df.filter("""organization='ABC\\'S' and branch like '%ABC\\'S%'""")
如果你决定使用双引号,你可以完全跳过逃避:
df.filter('''organization="ABC'S" and branch like "%ABC'S%"''')
通常,您可以通过使用方法调用替换SQL字符串来节省大量的故障排除:
df.where((df["organization"] == "ABC'S") & df["branch"].like("%ABC'S"))