I want to generate a time series, from 2021-12-01 to 2021-12-31, but I want to pass the values with variables into de function secuence.
This is my code:
JavaScript
x
6
1
spark = SparkSession.builder.appName('sparkdf').getOrCreate()
2
3
TyP_dias = spark.createDataFrame([('null','null')], ['MES','NEGOCIO'])
4
5
TyP_df0 = TyP_dias.withColumn('FECHA', sf.explode(sf.expr("sequence(to_date('2021-12-01'), to_date('2021-12-31'), interval 1 day)"))).show()
6
I want the values 2021-12-01 and 2021-12-31 inside variables.
Something like:
JavaScript
1
9
1
spark = SparkSession.builder.appName('sparkdf').getOrCreate()
2
3
TyP_dias = spark.createDataFrame([('null','null')], ['MES','NEGOCIO'])
4
5
eldia1 = '2021-12-01'
6
eldia2 = '2021-12-31'
7
8
TyP_df0 = TyP_dias.withColumn('FECHA', sf.explode(sf.expr("sequence(to_date(eldia1), to_date(eldia2), interval 1 day)"))).show()
9
And get this result:
JavaScript
1
12
12
1
+----+-------+----------+
2
| MES|NEGOCIO| FECHA|
3
+----+-------+----------+
4
|null| null|2021-12-01|
5
|null| null|2021-12-02|
6
|null| null|2021-12-03|
7
|null| null|2021-12-04|
8
|null| null|2021-12-05|
9
|null| null|2021-12-06|
10
|null| null|2021-12-07|
11
|null| null|2021-12-08|
12
But instead I’m reciving:
cannot resolve ‘
eldia1
‘ given input columns: [MES, NEGOCIO];
Advertisement
Answer
Easiest would be to use Python string formatting to add the variable content to your sql expression.
JavaScript
1
28
28
1
TyP_df0 = TyP_dias.withColumn('FECHA', sf.explode(sf.expr(f"sequence(to_date('{eldia1}'), to_date('{eldia2}'), interval 1 day)"))).show()
2
3
+----+-------+----------+
4
| MES|NEGOCIO| FECHA|
5
+----+-------+----------+
6
|null| null|2021-12-01|
7
|null| null|2021-12-02|
8
|null| null|2021-12-03|
9
|null| null|2021-12-04|
10
|null| null|2021-12-05|
11
|null| null|2021-12-06|
12
|null| null|2021-12-07|
13
|null| null|2021-12-08|
14
|null| null|2021-12-09|
15
|null| null|2021-12-10|
16
|null| null|2021-12-11|
17
|null| null|2021-12-12|
18
|null| null|2021-12-13|
19
|null| null|2021-12-14|
20
|null| null|2021-12-15|
21
|null| null|2021-12-16|
22
|null| null|2021-12-17|
23
|null| null|2021-12-18|
24
|null| null|2021-12-19|
25
|null| null|2021-12-20|
26
+----+-------+----------+
27
only showing top 20 rows
28