Фильтр данных Pyspark для разнесенной колонки - PullRequest
0 голосов
/ 02 мая 2020

Хотелось бы фильтровать строки на основе значения столбца.

 df = dataSource0.toDF();
 transDf = df.withColumn("daily_qty", F.split(F.concat_ws(',',*(x for x in sorted(df.columns) if  x.startswith('daily_qty_'))),',')) 
 ds2=transDf.withColumn("start_date",F.col("startdt_for_dailyqty")).withColumn("end_date",F.date_add(F.col("startdt_for_dailyqty"),48))         
 ds4 = ds2.withColumn("lineoffdate", F.expr("""sequence(start_date,end_date,interval 1 day)""")).withColumn("temp",F.arrays_zip("daily_qty","lineoffdate")).withColumn("temp",F.explode("temp"))))
 ds4.select("part_no","prod_week","temp.daily_qty","temp.lineoffdate").show()
 ds4.printSchema()
 **ds4.filter(F.col('temp.daily_qty') != '000000000')**
 print("after filter** " ,ds4.count())

Фильтр не работает только для этого поля. Для другого поля это работает. Я пробовал array_contains в фильтре для daily_qty. Это не сработало и для этого. Что мне здесь не хватает. Пример данных ниже

+------------+---------+----------+-----------+
|     part_no|prod_week| daily_qty|lineoffdate|
+------------+---------+----------+-----------+
|019990616100|   202004| 000000000| 2020-01-23|
|019990616100|   202004| 000000000| 2020-01-24|
|019990616100|   202004| 000000000| 2020-01-25|
|019990616100|   202005| 000000001| 2020-01-26|
+------------+---------+----------+-----------+

Попытка разбить два столбца, а фильтр для разбитого столбца не работает.

1 Ответ

0 голосов
/ 02 мая 2020

Похоже, что данные в столбце daily_qty имеют префикс с пробелом.

...