Вставка переменной даты в Dataframe с путем файла sting (read.csv) - PullRequest
0 голосов
/ 07 января 2020

Я работаю над процессом, в котором я хочу вставить CSV-файл в Dataframe. Этот файл является дельта-файлом, который запускается ежедневно и хранится в Azure хранилище DataLake.

DF = (

  spark
  .read.option("header",True)\.option("inferSchema", "true").option("delimiter", "|")
  .csv("folder2/folder1/Intenstion_file2020*.csv")
)

Из приведенного выше кода я в основном собираю все файлы, которые начинаются с «file2020», а затем все остальные файлы. Таким образом, если есть 10, то он помещается в один фрейм данных.

Я хочу вместо того, чтобы вставить все эти 10 файлов в фрейм данных, вместо этого выбрать файл, который соответствует системной дате. Поэтому, если у меня есть следующие файлы: 1) файл2020 / 01/01 2) файл2020 / 01/02 3) файл2020 / 01/09 я хочу, чтобы был загружен только третий файл. Затем в следующий раз он выберет следующий файл с самой последней датой.

Я попытался решить эту проблему, сначала получив системную дату. Это выполняется перед частью кадра данных.

 #Getting System Time Stamp
import datetime
date_value = datetime.datetime.now()
print(datetime.datetime.strftime(date_value,'%Y/%m/%d'))

Так что, если я запусту этот блокнот выше, у меня будет "date_value" = 2020/01/09. То, что я хотел сделать, - это затем объединить это значение в "csv (путь)" в приведенном выше примере с фреймом данных.

Так что вместо

.csv("folder2/folder1/Intenstion_file2020*.csv")

у меня будет что-то вроде:

.csv(concat_ws("....file" date_value "*.csv"))

Таким образом, он автоматически найдет файл с датой, ближайшей к системной дате.

Я пробовал некоторые переменные из приведенного выше, но мне не хватает правильного синтаксиса или, если я делать выше возможно. Кто-нибудь пытался сделать выше?

Любая помощь приветствуется.

Обновление 01/09/2020 Я обновил вопрос, чтобы прояснить, что я пытаюсь добиться.

1 Ответ

0 голосов
/ 07 января 2020

Я думаю, что вы используете concat_ws неправильно.

Пожалуйста, укажите это - https://spark.apache.org/docs/2.1.0/api/python/pyspark.sql.html#pyspark. sql .functions.concat_ws

И более того, вы не можете объединить столбец и строку. Это должно быть два столбца.

Поэтому используйте f.concat_ws ("-", df.colA, f.lit ("date_value"))

...