apache-spark - Sparksql Pyspark crossJoin over dimension / for a specific window
问题描述
这是我的数据框
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 但只针对与特定 ID 关联的值。这可能吗?有任何想法吗?也许通过窗口函数?
解决方案
解决方案是
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|
+---+----------+----------+
推荐阅读
- python - 无法在不重定向的情况下创建付款发票
- c# - 在没有 WPF Scrollviewer 的情况下同步滚动两个 WPF(!) Richtextboxes
- performance - 无法使用 pypy 运行 python 文件
- python - 根据特定顺序从文件中读取文件
- wordpress - Facebook for WooCommerce 插件
- dataset - 有人可以帮我找到满足以下要求的数据集吗?
- flutter - 如何添加如图所示的弯曲模态底片?如何在其上方添加关闭按钮?飘飘然
- r - 使用 case_when() 和 filter() 根据 R 中一列中的值和另一列中的级别对数据帧进行子集化
- mysql - 为什么我的 SQL FOREIGN KEY 子句返回错误?
- javascript - 即使 gtag 是窗口对象的一部分,Javascript 也会抛出“Uncaught TypeError: gtag is not a function”