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

多组数据一致性校验需求:判断同Item下各组值是否一致

实现方案:验证分组数据一致性

核心验证规则

需同时满足以下两个条件才返回1,否则返回0:

  • 每个Item对应的User_id必须包含且仅包含1、2、3三个值(无缺失、无重复)
  • 同一个Item下所有User_id的Remark值完全一致

方案1:SQL实现

假设数据存储在表item_remarks中,以下SQL语句可直接返回验证结果:

SELECT 
    CASE 
        WHEN EXISTS (
            -- 检查是否存在不符合要求的Item
            SELECT 1
            FROM item_remarks
            GROUP BY Item
            HAVING 
                -- 验证User_id恰好是1、2、3(去重后计数为3,且最小/最大值匹配)
                (COUNT(DISTINCT User_id) != 3 OR MIN(User_id) != 1 OR MAX(User_id) != 3)
                OR
                -- 验证同一Item下Remark值唯一
                COUNT(DISTINCT Remark) != 1
        ) THEN 0
        ELSE 1
    END AS validation_result;

逻辑说明:

  1. 按Item分组后,先校验用户ID:去重后数量必须为3,且最小ID是1、最大ID是3,确保刚好覆盖1、2、3三个用户(避免重复或缺失)
  2. 同时校验同一Item下的Remark去重后数量是否为1,保证所有用户的备注完全一致
  3. 只要有任意一个Item不满足上述任一条件,就返回0;所有Item都符合要求则返回1

方案2:Python(Pandas)实现

如果数据以DataFrame形式存在,用Pandas可快速完成验证:

import pandas as pd

def validate_data(df):
    # 按Item分组,统计关键指标
    group_stats = df.groupby('Item').agg(
        user_unique_count=('User_id', 'nunique'),
        min_user_id=('User_id', 'min'),
        max_user_id=('User_id', 'max'),
        remark_unique_count=('Remark', 'nunique')
    )
    # 检查所有分组是否满足全部条件
    is_valid = (
        (group_stats['user_unique_count'] == 3) &
        (group_stats['min_user_id'] == 1) &
        (group_stats['max_user_id'] == 3) &
        (group_stats['remark_unique_count'] == 1)
    ).all()
    return 1 if is_valid else 0

# 示例调用(替换df为你的数据对象)
# result = validate_data(df)

逻辑说明:

  1. 对每个Item分组,统计用户ID去重数量、用户ID的最小/最大值、Remark去重数量
  2. 验证所有分组是否同时满足用户数为3、用户ID覆盖1-3、Remark唯一三个条件
  3. 全部符合返回1,否则返回0

对应示例的验证结果

  • 示例1:所有Item的用户数都是3,且Remark一致,返回1
  • 示例2:AM180仅2个用户、AM182仅1个用户,不满足用户数要求,返回0
  • 示例3:多个Item的Remark存在不同值,不满足备注一致要求,返回0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 13:10:10