Я пытаюсь добавить три вычисляемых столбца в свой фрейм данных.
Приведенный ниже подход не работает и выдает ошибку:
TypeError: недопустимый аргумент, а не строка или столбец: DataFrame[TicketClosedDate: timestamp] типа <class 'pyspark.sql.dataframe.DataFrame'>. Для литералов столбцов используйте функцию 'lit', 'array', 'struct' или 'create_map'.
TAT = df.select(datediff(col('zTicketSubmitDateUTC'), col('zTicketUpdateDateUTC')).alias('TAT'))
TicketClosedDate = df.select(to_timestamp(
when(col('TicketStatusName')=='Closed',col('TicketUpdateDate'))
.when(col('TicketStatusName')=='Complete',col('TicketUpdateDate'))
.when(col('TicketStatusName')=='Done',col('TicketUpdateDate'))
.otherwise('Null')
).alias('TicketClosedDate'))
zTicketClosedDateUTC = df.select(to_timestamp(
when(col('TicketStatusName')=='Closed',col('zTicketUpdateDateUTC'))
.when(col('TicketStatusName')=='Complete',col('zTicketUpdateDateUTC'))
.when(col('TicketStatusName')=='Done',col('zTicketUpdateDateUTC'))
.otherwise('Null')
).alias('zTicketClosedDateUTC'))
df2 = df.select(
col('ProjectID'),
col('TicketID'),
col('ChildTicketID'),
col('TicketSubmitDate'),
col('zTicketSubmitDateUTC'),
col('TicketUpdateDate'),
col('zTicketUpdateDateUTC'),
TicketClosedDate,
zTicketClosedDateUTC,
col('TicketStatusName'),
col('PtgName'),
col('TicketCategory'),
TAT)
Попробуйте код ниже. Вам не нужно делать df.select()
в переменных.
TAT = datediff(col('zTicketSubmitDateUTC'), col('zTicketUpdateDateUTC')).alias('TAT')
TicketClosedDate = to_timestamp(
when(col('TicketStatusName')=='Closed',col('TicketUpdateDate'))
.when(col('TicketStatusName')=='Complete',col('TicketUpdateDate'))
.when(col('TicketStatusName')=='Done',col('TicketUpdateDate'))
.otherwise('Null')
).alias('TicketClosedDate')
zTicketClosedDateUTC = to_timestamp(
when(col('TicketStatusName')=='Closed',col('zTicketUpdateDateUTC'))
.when(col('TicketStatusName')=='Complete',col('zTicketUpdateDateUTC'))
.when(col('TicketStatusName')=='Done',col('zTicketUpdateDateUTC'))
.otherwise('Null')
).alias('zTicketClosedDateUTC')
df2 = df.select(
col('ProjectID'),
col('TicketID'),
col('ChildTicketID'),
col('TicketSubmitDate'),
col('zTicketSubmitDateUTC'),
col('TicketUpdateDate'),
col('zTicketUpdateDateUTC'),
TicketClosedDate,
zTicketClosedDateUTC,
col('TicketStatusName'),
col('PtgName'),
col('TicketCategory'),
TAT)