При преобразовании строки в дату, где строка должна быть только в формате MM-dd-yyyy, строки alpha-numeri c и mm-dd-yy также преобразуются в дату - PullRequest
0 голосов
/ 05 мая 2020

Я хочу проверить, соответствует ли предоставленная строка в столбце указанному c формату даты.

Например - Требуемый формат даты - MM-dd-yyyy

Input -

col1
2019-01-01
01-01-2019
01-01-19
01-01-201B

Желаемый результат -

col1        |col2
------------|-------------
2019-01-01  |null
01-01-2019  |2019-01-01
01-01-19    |null
01-01-201B  |null

, но результат, который я получаю для 3-й и 4-й строк, -

col1        |col2
------------|-------------
01-01-19    |0019-01-01
01-01-201B  |0201-01-01

Вот пример кода -

import pyspark.sql.functions as sf

a=[("zxczxc AS OF 2019-01-01",),("asasdwer AS OF 01-01-2019",),("ssadflksad AS OF 01-01-20",),("wrongdt AS OF dt------",),
   ("again wrgdt AS OF 01-01-201b",),("crct AS OF 01-01-2019 asdasd",),("asasdwer AU 01-01-2019",)]

df = spark.createDataFrame(a,["col1"])
df = df.withColumn("col2",sf.when(sf.instr("col1","AS OF")!=0,sf.col("col1").substr(sf.instr("col1","AS OF")+6,sf.lit(10))).otherwise("-1"))
df = df.withColumn("col3",sf.when(sf.instr("col1","AS OF")!=0,sf.to_date(sf.col("col1").substr(sf.instr("col1","AS OF")+6,sf.lit(10)),"MM-dd-yyyy")).otherwise("-1"))

df.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...