Маленькая хитрость, небольшое улучшение.

Предположим, у нас есть один набор данных с одним столбцом даты. Мы хотим знать диапазон дат — минимальную и максимальную дату всех записей.

Вот код для этого:

In [1]: import pyspark.sql.functions as F
In [2]: U.show_info(
   ...:     df_final.select(
   ...:         F.array_join(
   ...:             F.array(
   ...:                 F.min("sale_date").alias("min_sale_date"),
   ...:                 F.max("sale_date").alias("max_sale_date"),
   ...:             ),
   ...:             delimiter=" > ",
   ...:         ).alias("sale_date_range")
   ...:     )
   ...: )
Data Total: 1                                                                                                                                                      
root
 |-- sale_date_range: string (nullable = false)

-RECORD 0--------------------------------                                                                                                                          
 sale_date_range| 2022-07-01 > 2023-07-20 
  • используйте функции min и max, чтобы получить минимальную и максимальную даты
  • создайте столбец массив для включения обоих значений
  • присоединиться к столбцу массива (функция array_join) с разделителем ‘›’
  • выбрать из фрейма данных
  • используйте псевдоним для переименования столбцов, созданных функциями

Таким образом, мы получаем интуитивно понятный вывод диапазона дат.

Рекомендации