python - 如何将一个数据帧循环到另一个数据帧并在pyspark中获取单个匹配记录
问题描述
**数据框 1 **
+----+------+------+-----+-----+
|key |dc_count|dc_day_count |
+----+------+------+-----+-----+
| 123 |13 |66 |
| 123 |13 |12 |
+----+------+------+-----+-----+
**规则数据框**
+----+------+------+-----+-----++------+-----+-----+
|key |rule_dc_count|rule_day_count |rule_out |
+----+------+------+-----+-----++------+-----+-----+
| 123 |2 |30 |139 |
| 123 |null |null |64 |
| 124 |2 |30 |139 |
| 124 |null |null |64 |
+----+------+------+-----+-----+----+------+-----+--
如果 dc_count>rule_dc_count 和 dc_day_count > rule_day_count 填充相应的 rule_out
否则其他 rule_out"
预期产出
+----+------+------+-
|key |rule_out |
+----+------+------+
| 123 | 139 |
| 124 | 64 |
+----+------+------+
解决方案
Assuming expected output as-
+---+--------+
|key|rule_out|
+---+--------+
|123|139 |
+---+--------+
Below query should work-
spark.sql(
"""
|SELECT
| t1.key, t2.rule_out
|FROM table1 t1 join table2 t2 on t1.key=t2.key and
|t1.dc_count > t2.rule_dc_count and t1.dc_day_count > t2.rule_day_count
""".stripMargin)
.show(false)
推荐阅读
- python-3.x - 使用 Pandas to_sql 将数据帧写入 DB2 时出错
- r - 为什么我的 xts 对象在索引字段中有一个 X?
- android - 尝试使用 exoplayer 流式传输加密视频时出错
- kotlin - 在 Kotlin 中等待异步进程结果的函数
- oracle - 使用 Liquibase 创建 Oracle CTXSYS.CTXCAT 索引
- php - 从表格行提交 PHP
- azure-ad-graph-api - 无法使用 GraphAPI 通过电子邮件找到用户
- android - 如何在返回列表时将数据库中的日期转换为格式化字符串
- c# - NInject v3.3.4 和 WebApi 2,没有无参数构造函数
- python - 如何打印二维矩阵并添加标签,同时保持一切居中(Python)