You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySpark多条件过滤错误记录:持股规则下的异常数据识别

数据校验与错误标记需求

原始DataFrame

+--------------+---------------+------------------+------------+-----+
|registerNumber|joint_indicator|share_class_number|no_of_shares|mn_id|
+--------------+---------------+------------------+------------+-----+
|      XXXXXXXX|              1|                 1|   000000001|1
|      XXXXXXXX|              1|                 1|   000000000|2
|      XXXXXXXX|              1|                 1|   000000001|3
|      XXXXXXXX|              1|                 1|   000000000|4
|      XXXXXXXX|              1|                 1|   000000001|5
|      XXXXXXXX|              1|                 1|   000000000|6
|      XXXXXXXX|              1|                 1|   000000001|7
|      XXXXXXXX|              1|                 1|   000000000|8
|      XXXXXXXX|               |                 1|   000000001|9
|      XXXXXXXX|              1|                 1|   000000000|10
|      XXXXXXXX|              1|                 1|   000000000|11
|      XXXXXXXX|              1|                 1|   000000001|12
|      XXXXXXXX|              1|                 1|   000000000|13
|      XXXXXXXX|              1|                 1|   000000001|14
|      XXXXXXXX|              1|                 1|   000000000|15
|      YYYYYYYY|              1|                 1|   000000001|16
|      YYYYYYYY|              1|                 1|   000000001|17
|      YYYYYYYY|              1|                 1|   000000000|18
|      YYYYYYYY|              1|                 1|   000000001|19
|      ZZZZZZZZ|              1|                 2|   000000001|20
|      ZZZZZZZZ|              1|                 2|   000000000|21
|      ZZZZZZZZ|              1|                 2|   000000000|22
|      ZZZZZZZZ|               |                 2|   000000001|23
+--------------+---------------+------------------+------------+-----+

字段说明与校验规则

  • registerNumber:代表一组记录
  • joint_indicator:为1表示联合持股,为空表示个人持股
  • 联合持股基础规则:首条joint_indicator=1的记录no_of_shares必须大于0,后续同组联合持股记录的no_of_shares必须为0

需识别并标记两类错误记录:

  1. 当joint_indicator为空且no_of_shares>0时,下一条joint_indicator有值的记录若no_of_shares=0则为错误
  2. 联合持股组内,首条记录后出现no_of_shares>0的记录则为错误

预期输出结果

为错误记录添加error字段标记,并保留对应registerNumber:

+--------------+---------------+------------------+------------+-----+-------+
|registerNumber|joint_indicator|share_class_number|no_of_shares|mn_id|error  |
+--------------+---------------+------------------+------------+-----+-------+
|      XXXXXXXX|              1|                 1|   000000001|    1|  false| 
|      XXXXXXXX|              1|                 1|   000000000|    2|  false|
|      XXXXXXXX|              1|                 1|   000000001|    3|  false| 
|      XXXXXXXX|              1|                 1|   000000000|    4|  false|
|      XXXXXXXX|              1|                 1|   000000001|    5|  false|
|      XXXXXXXX|              1|                 1|   000000000|    6|  false|
|      XXXXXXXX|              1|                 1|   000000001|    7|  false|
|      XXXXXXXX|              1|                 1|   000000000|    8|  false|
|      XXXXXXXX|           null|                 1|   000000001|    9|  false| 
|      XXXXXXXX|              1|                 1|   000000000|   10|   true| 
|      XXXXXXXX|              1|                 1|   000000000|   11|  false|
|      XXXXXXXX|              1|                 1|   000000001|   12|  false|
|      XXXXXXXX|              1|                 1|   000000000|   13|  false|
|      XXXXXXXX|              1|                 1|   000000001|   14|  false|
|      XXXXXXXX|              1|                 1|   000000000|   15|  false|
|      YYYYYYYY|              1|                 1|   000000001|   16|  false|
|      YYYYYYYY|              1|                 1|   000000001|   17|  true |
|      ZZZZZZZZ|              1|                 2|   000000000|   22|  false|
|      YYYYYYYY|              1|                 1|   000000000|   18|  false|
|      YYYYYYYY|              1|                 1|   000000001|   19|  true |
|      ZZZZZZZZ|           null|                 2|   000000001|   23|  false|
|      ZZZZZZZZ|              1|                 2|   000000001|   20|  false|
|      ZZZZZZZZ|              1|                 2|   000000000|   21|  false|
+--------------+---------------+------------------+------------+-----+-------+

内容的提问来源于stack exchange,提问作者Muskan Makhija

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 21:09:56