python - pyspark sql中带有正则表达式的case语句
问题描述
我有下面的pyspark代码。在代码中,我从另一个已转换为临时视图的数据框创建数据框。然后我使用 sql 查询在最终查询中创建一个新字段。我试图创建的字段的代码最初来自 postgresql,我想知道在 pyspark sql 中 case 语句和正则表达式的正确版本是什么?
case when a.field2::varchar ~ '^[0-9]+$' then a.field2::varchar else '0' end
我只是强制转换(field2 作为字符串)吗?
什么是正则表达式测试的正确 pyspark sql 版本?
代码:
from pyspark.sql.types import *
from pyspark.context import SparkContext
from pyspark.sql import Window
from pyspark.sql import SQLContext
from pyspark.sql.functions import col
from pyspark.sql.functions import first
from pyspark.sql.functions import date_format
from pyspark.sql.functions import lit,StringType
from pyspark.sql.functions import date_trunc, udf,trim, upper, to_date, substring, length, min, when, format_number, dayofmonth, hour, dayofyear, month, year, weekofyear, date_format, unix_timestamp
from pyspark import SparkConf
from pyspark.sql.functions import coalesce
from pyspark.sql import SparkSession
from pyspark.sql.functions import year, month, dayofmonth
from pyspark.sql.functions import UserDefinedFunction
import datetime
from pyspark.sql.functions import year
from pyspark.sql.functions import datediff,coalesce,lag
from pyspark.sql.functions import when, to_date
from pyspark.sql.functions import date_add
from pyspark.sql.functions import UserDefinedFunction
import traceback
import sys
import time
import math
import datetime
table_df.createOrReplaceTempView("table")
query="""select
case when a.field2::varchar ~ '^[0-9]+$' then a.field2::varchar else '0' end as field1
from table a"""
df=spark.sql(query)
解决方案
你可以试试:
query = """
select
case when a.field2 rlike '^[0-9]+$'
then a.field2
else '0'
end as field1
from table a
"""
df = spark.sql(query)
推荐阅读
- javascript - URL.createObjectURL(blob):如何为动态生成的 .pdf 提供“有意义的文件名”?
- javascript - 使用 Javascript 下载不同大小的图像
- ruby - [Cucumber]Ruby 常量的奇怪行为
- javascript - 如何在php foreach循环中获取选项的选定值
- phonegap-build - 压缩内容上传
- android - 使用 ObjectAnimator 的动画导致键盘与 EditText 重叠
- react-native - React 本机开发者菜单不会显示在 Android Studio 模拟器上
- java - Java Collectors.groupingBy 可以将 Stream 作为其分组项目列表返回吗?
- javascript - 到达滚动结束时将滚动从列表框转移到窗口
- javascript - 使用 Selenium 修改 Javascript Navigator 对象