Столбец pyspark не повторяется с помощью withColumn - PullRequest
0 голосов
/ 31 октября 2019

Почему я получаю столбец не повторяемой ошибки при использовании pyspark?

cost_allocation_df = cost_allocation_df.withColumn(
    'resource_tags_user_engagement',          
     f.when(
         (f.col('line_item_usage_account_id') == '123456789101', '1098765432101') &
         (f.col('resource_tags_user_engagement') == '' ) |
         (f.col('resource_tags_user_engagement').isNull()) |
         (f.col('resource_tags_user_engagement').rlike('^[a-zA-Z]')),
    '10546656565').otherwise(f.col('resource_tags_user_engagement'))
)

1 Ответ

0 голосов
/ 31 октября 2019

У вас есть прямое сравнение из столбца с value, которое не будет работать. Вам нужно будет составить столбец этого value, используя lit()

Попробуйте преобразовать свой код в:

cost_allocation_df = cost_allocation_df.withColumn('resource_tags_user_engagement',          
 f.when(
       ((f.col('line_item_usage_account_id') == f.lit('123456789101')) | 
       (f.col('line_item_usage_account_id') == f.lit('1098765432101'))) & 
       (f.col('resource_tags_user_engagement') == f.lit('') ) |
       (f.col('resource_tags_user_engagement').isNull()) |
       (f.col('resource_tags_user_engagement').rlike('^[a-zA-Z]')), '10546656565'
       ).otherwise(f.col('resource_tags_user_engagement')))
...