Sparksql Pyspark crossJoin через измерение / для определенного окна - PullRequest
0 голосов
/ 05 декабря 2018

Это мой фрейм данных

df = spark.createDataFrame([("A", "2018-01-05"), ("A", "2018-02-10"), ("B", "2018-08-11"), ("B", "2018-09-11")], ("ID", "date"))

Я хотел бы преобразовать его так, чтобы он выглядел так:

+---+----------+----------+
| ID|     date1|     date2|
+---+----------+----------+
|  A|2018-01-05|2018-02-10|
|  A|2018-02-10|2018-01-05|
|  A|2018-01-05|2018-01-05|
|  A|2018-02-10|2018-02-10|
|  B|2018-08-11|2018-09-11|
|  B|2018-09-11|2018-08-11|
|  B|2018-08-11|2018-08-11|
|  B|2018-09-11|2018-09-11|
+---+----------+----------+

Так что в основном мне нужно сделать crossJoin, но только длязначения, связанные с определенным идентификатором.Это возможно?Есть идеи?Может через оконную функцию?

1 Ответ

0 голосов
/ 05 декабря 2018

Решение

df.join(df, ["ID"]).toDF("id", "date1", "date2").show()

И результат

+---+----------+----------+                                                     
| id|     date1|     date2|
+---+----------+----------+
|  B|2018-08-11|2018-08-11|
|  B|2018-08-11|2018-09-11|
|  B|2018-09-11|2018-08-11|
|  B|2018-09-11|2018-09-11|
|  A|2018-01-05|2018-01-05|
|  A|2018-01-05|2018-02-10|
|  A|2018-02-10|2018-01-05|
|  A|2018-02-10|2018-02-10|
+---+----------+----------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...