Как получить только даты конца месяца в pyspark sql? - PullRequest
1 голос
/ 20 марта 2020

Как мы можем выбрать даты с конца месяца только с помощью pyspark?

Настройка

import numpy as np
import pandas as pd


import pyspark
spark = pyspark.sql\
          .SparkSession\
          .builder\
          .appName('app')\
          .getOrCreate()

# sql
from pyspark.sql import functions as F
from pyspark.sql.types import *
from pyspark import SparkConf, SparkContext, SQLContext

sc = spark.sparkContext
sqlContext = SQLContext(sc)

df = pd.DataFrame({
    'id': np.random.randint(0,100000,365*3),
    'date': pd.date_range('2010-01-01',periods=365*3)
})


df.head()
sdf = sqlContext.createDataFrame(df)
sdf.printSchema()
sdf.show(5)

# create table
sdf.createOrReplaceTempView("MyTable")
spark.sql("select * from MyTable limit 2").show()

Моя попытка

q = """
SELECT id,date
FROM MyTable
WHERE DAY(DATE_ADD(date, INTERVAL 1 DAY)) = 1
ORDER BY id

"""

spark.sql(q).show()

Запрос q работает в обычном режиме SQL, но не работает в pyspark.
Как заставить это работать?

Ссылки по теме

...