В настоящее время я пытаюсь выяснить, как передать аргумент формата String в функцию pyspark to_date через параметр столбца.
В частности, у меня есть следующие настройки:
sc = SparkContext.getOrCreate()
df = sc.parallelize([('a','2018-01-01','yyyy-MM-dd'),
('b','2018-02-02','yyyy-MM-dd'),
('c','02-02-2018','dd-MM-yyyy')]).toDF(
["col_name","value","format"])
В настоящее время я пытаюсь добавить новый столбец, в котором каждая из дат из столбца F.col ("значение"), являющегося строковым значением, анализируется на дату.
Отдельно для каждого формата это можно сделать с помощью
df = df.withColumn("test1",F.to_date(F.col("value"),"yyyy-MM-dd")).\
withColumn("test2",F.to_date(F.col("value"),"dd-MM-yyyy"))
Это, однако, дает мне 2 новых столбца - но я хочу иметь 1 столбец, содержащий оба результата - но вызов столбца не представляется возможным с помощью функции to_date:
df = df.withColumn("test3",F.to_date(F.col("value"),F.col("format")))
Здесь выдается ошибка «Объект столбца не может быть вызван».
Возможно ли иметь общий подход для всех возможных форматов (чтобы мне не приходилось вручную добавлять новые столбцы для каждого формата)?