【发布时间】:2019-05-15 13:21:40
【问题描述】:
我正在尝试在 PySpark 中编写一个查询,该查询将从数组中获取正确的值。
例如,我有一个名为 df 的数据框,其中包含三列“companyId”、“companySize”和“weightingRange”。 “companySize”列只是员工人数。 “weightingRange”列是一个数组,其中包含以下内容
[ {"minimum":0, "maximum":100, "weight":123},
{"minimum":101, "maximum":200, "weight":456},
{"minimum":201, "maximum":500, "weight":789}
]
所以数据框看起来像这样(weightingRange 同上,为了更清晰的格式,在下面的示例中将其截断)
+-----------+-------------+------------------------+--+
| companyId | companySize | weightingRange | |
+-----------+-------------+------------------------+--+
| ABC1 | 150 | [{"maximum":100, etc}] | |
| ABC2 | 50 | [{"maximum":100, etc}] | |
+-----------+-------------+------------------------+--+
因此,对于公司规模 = 150 的条目,我需要将权重 456 返回到名为“companyWeighting”的列中
所以它应该显示以下内容
+-----------+-------------+------------------------+------------------+
| companyId | companySize | weightingRange | companyWeighting |
+-----------+-------------+------------------------+------------------+
| ABC1 | 150 | [{"maximum":100, etc}] | 456 |
| ABC2 | 50 | [{"maximum":100, etc}] | 123 |
+-----------+-------------+------------------------+------------------+
我看过
df.withColumn("tmp",explode(col("weightingRange"))).select("tmp.*")
然后加入但尝试应用这将笛卡尔数据。
建议赞赏!
【问题讨论】:
-
你能展示一个数据样本吗?该数组是否在每一行中重复?
-
@mayankagrawal 按要求添加样本。数组对每一行重复。
标签: json pyspark databricks azure-databricks