【发布时间】:2018-09-16 05:52:45
【问题描述】:
我有如下两个数据框,我正在尝试使用外键搜索第二个 df,然后生成一个新的数据框。我正在考虑做一个spark.sql("""select history.value as previous_year 1 from df1, history where df1.key=history.key and history.date=add_months($currentdate,-1*12)""",但我需要多次这样做,比如10 previous_years。并将它们重新组合在一起。我怎样才能为此创建一个函数?非常感谢。这里很新。
dataframe one:
+---+---+-----------+
|key|val| date |
+---+---+-----------+
| 1|100| 2018-04-16|
| 2|200| 2018-04-16|
+---+---+-----------+
dataframe two : historical data
+---+---+-----------+
|key|val| date |
+---+---+-----------+
| 1|10 | 2017-04-16|
| 1|20 | 2016-04-16|
+---+---+-----------+
我要生成的结果是
+---+----------+-----------------+-----------------+
|key|date | previous_year_1 | previous_year_2 |
+---+----------+-----------------+-----------------+
| 1|2018-04-16| 10 | 20 |
| 2|null | null | null |
+---+----------+-----------------+-----------------+
【问题讨论】:
-
我认为正确的加入会起作用,你试过了吗?
-
@ShankarKoirala 抱歉,我用所需的输出更新了我的问题。我尝试了硬编码 sql,但问题是如果我想要 10 年的历史作为列,我需要重复相同的 sql。这就是为什么我正在寻找某种循环功能
-
到目前为止你有什么尝试?
-
@ShankarKoirala 只是基本 spark.sql("""select history.value as previous_year 1 from df1, history where df1.key=history.key and history.date=add_months($currentdate,-1 *12)""",我认为说 10 个然后将它们重新组合在一起并不是一个好主意
标签: sql scala function apache-spark dataframe