Pyspark执行pivot透视操作时报Cannot resolve column name错误咨询
PySpark pivot操作列无法解析错误解决
错误产生原因
代码执行透视聚合时,指定的求和列reload_sum不存在于操作的数据集packetmonthly中。从报错给出的字段列表可知,packetmonthly仅包含packet_sum类的统计字段,reload_sum是另一个数据集reloadmonthly的专属字段,属于字段归属混淆导致的解析异常。
解决方案
根据实际业务需求二选一即可:
- 若需要统计
packetmonthly的流量类充值总和,直接将求和字段替换为packet_sum即可,修改后代码如下:
reloadid = reloadmonthly.dropDuplicates(["msisdn"]) reloadid = reloadid.join( packetmonthly.withColumn("p", F.expr("concat('reload_sum_l', last_x_month)")) .groupBy("msisdn") .pivot("p") .sum("packet_sum"), on=["msisdn"], how="left_outer", )
- 若确实需要统计
reload_sum字段的透视结果,将透视操作的数据源替换为reloadmonthly即可,修改后代码如下:
reloadid = reloadmonthly.dropDuplicates(["msisdn"]) reloadid = reloadid.join( reloadmonthly.withColumn("p", F.expr("concat('reload_sum_l', last_x_month)")) .groupBy("msisdn") .pivot("p") .sum("reload_sum"), on=["msisdn"], how="left_outer", )
内容的提问来源于stack exchange,提问作者Nabih Bawazir
相关产品推荐
相关产品推荐

