首页 > 解决方案 > 从开始和结束日期获取文件的动态路径

问题描述

我只想制作一个路径变量,以根据输入的开始日期和结束日期从不同目录中获取所有数据。

startDate = 2011/05/01
endDate = 2011/05/04

/myfolder/2011/05/01/*.csv
/myfolder/2011/05/02/*.csv
/myfolder/2011/05/03/*.csv
/myfolder/2011/05/04/*.csv

我可以通过从 4 个不同的路径中分别提取来做到这一点。但我想要 1 个动态路径。

标签: datedynamicpathdate-rangedatabricks

解决方案


您可以使用 joda-time 完成此操作。

import org.joda.time.Days
import org.joda.time.format.DateTimeFormat

def dynamicPath(start: String, end: String): Array[String] = {
  val format = DateTimeFormat.forPattern("yyyy/MM/dd")
  val startDate = format.parseDateTime(start)
  val endDate = format.parseDateTime(end)

  val numberOfDays = Days.daysBetween(startDate, endDate).getDays()

  val dateRange = (for (d <- 0 to numberOfDays) yield s"/myfolder/${startDate.plusDays(d).toString("yyyy/MM/dd")}/*.csv").toArray

  dateRange
}

你会用它来调用它:

val folderPaths = dynamicPath("2011/05/01", "2012/06/04")

推荐阅读