выберите конец месяца и сделайте его строкой в ​​pyspark - PullRequest
0 голосов
/ 07 мая 2020

Я хочу создать al oop в pyspark, где я даю месяц, и он должен выбрать таблицу в конце месяца и в конце месяца предыдущего месяца. Выбор месяца производится строкой. Поэтому я даю «201901», и он должен выбрать «20190131» и «20181231».

И, если возможно, он должен запускаться автоматически и выбирать конец предыдущего месяца с сегодняшнего дня и конец предыдущего предыдущего месяца сегодня. Итак, сегодня у нас 2020-05-07, поэтому следует выбрать «20200430» и «20200331».

def selectTables(date):

    i = 0

    for i in range(len(date)): 

        recentDate = .... # should be for the first iteration '20190131'
        previousDate = .... # should be for the first iteration '20181231'

    recent = spark.read.parquet('table.parquet/date=' + recentDate[i])
    previous = spark.read.parquet('table.parquet/date=' + previousDate[i])



selectTables(['201901', '201902'])

1 Ответ

1 голос
/ 07 мая 2020

Используйте add_months, last_day во встроенных функциях искры, чтобы получить последний день.

Example:

date='201901'

recentDate=spark.sql("select string(last_day(to_date('{}','yyyyMM')))".format(date)).collect()[0][0]
#u'2019-01-31'

previousDate=spark.sql("select string(last_day(add_months(to_date('{}','yyyyMM'),'-1')))".format(date)).collect()[0][0]
#u'2018-12-31'
...