Мне дали этот сложный SQL-запрос. В наборе данных df_acct я хотел бы назначить определенные месяцы кварталам из переменной Run_Date, которая извлекается из предыдущего CRC набора данных. Как я могу изменить этот код так, чтобы для месяцев 2-4 был назначен Q1, для месяцев 5-7 - Q2 и так далее?
spark=SparkSession\
.builder\
.appName("Python Spark Dataframe")\
.config(conf = SparkConf())\
.getOrCreate()
sc = spark.sparkContext
sqlContext = SQLContext(sc)
########################
# Loading source files #
########################
# Load files for CRC data
df_crc = sqlContext.read.parquet("/appdata/TF/TF_Official/CRCS_LDU/crcs_ldu*") \
.select("TF_consumer_id", "Run_Date", "fsa", (col("go30")/12).alias("age"), "go90", "as115", "cvsc100") \
.replace(0, None, subset="as115").replace(-8, None, subset="cvsc100")
df_crc.printSchema()
df_crc.createOrReplaceTempView("df_crc")
# Load files for trade-level data
df_acct = sqlContext.read.parquet("/appdata/TU/TF_Official/Account/account_2009-{01,07}*",
"/appdata/TF/TF_Official/Account/account_201[0-9]-{01,07}*") \
.select("TF_Consumer_ID","TF_Trade_ID","Joint_Account_ID","Primary_Indicator", \
"ACCT_TYPE","PRODUCT_TYPE","CLOSED_INDIC","NARRATIVE_CODE1","NARRATIVE_CODE2","Insurance_Indicator", \
"CREDIT_LIMIT","HIGH_CREDIT_AMT","BEST_AMT_FLAG", \
"CURRENT_BALANCE","CHARGOFF_AMT","MOP","PAYMT_PAT","L3","MONTHS_REVIEWED","ACCT_AGE", \
to_date("Run_Date").alias("Run_date"), \
to_date(concat(col("LAST_UPDATED_DT").substr(1,4),lit("-"), \
col("LAST_UPDATED_DT").substr(5,2),lit("-"), \
col("LAST_UPDATED_DT").substr(7,2))).alias("LAST_UPDATED_date"), \
to_date(concat(col("OPENED_DT").substr(1,4),lit("-"), \
col("OPENED_DT").substr(5,2),lit("-"), \
col("OPENED_DT").substr(7,2))).alias("OPENED_date"), \
to_date(concat(col("FILE_SINCE_DT").substr(1,4),lit("-"), \
col("FILE_SINCE_DT").substr(5,2),lit("-"), \
col("FILE_SINCE_DT").substr(7,2))).alias("FILE_SINCE_date") ) \
.where("PRODUCT_TYPE RLIKE '^(BC)$'")
df_acct.createOrReplaceTempView("df_acct")