указание типа данных string to date с помощью pyspark

#filter #pyspark #partition

#Фильтр #pyspark #раздел

Вопрос:

Я хочу отфильтровать паркет, разделенный по дате. Когда я применяю фильтр

 .filter(col('DATE')>= '2020-08-01')
  

При выполнении фильтрации значение преобразуется 2020-08-01 в строку, как показано на физическом плане. Я читал, что это неэффективно и приводит к полному сканированию файлов.

Фильтры разделов: [isnotnull(ДАТА# 5535), (приведение (ДАТА# 5535 в виде строки) >= 2020-08-01)]

Как мне использовать string as date в предложении filter? Во всех примерах в Интернете упоминается использовать to_date , но это работает только для столбцов. Возможно ли это или даже стоит того? Пожалуйста, сообщите. Спасибо

Ответ №1:

Попробуйте это —

 import pyspark.sql.functions as F
.filter(F.expr(" `Date` >= to_date('2020-08-01','yyyy-MM-dd' )"))
  

Комментарии:

1. Я пробовал это, но получаю следующую ошибку: nextraneous input '<EOF>' expecting {')', ','}(line 1, pos 45)nn== SQL ==n DATE` >= to_date(‘2020-08-01′,’гггг-ММ-дд’ n———————————————^^^ н»`

2. @thentangler отсутствует ) в конце предложения. Исправлено IMO.

3. Спасибо, двойные кавычки на самом деле после первой закрывающей скобки. Для меня сработало следующее: f.expr(" `DATE` >= to_date('2020-08-01', 'yyyy-MM-dd' ) ") )