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

统计特定键唯一值 筛选Secondary Identifiers计数大于1的Primary Identifier

解决方案

方法1:原生PowerShell Cmdlet实现(适合中小体积数据)

直接用Group-Object结合Select-Object -Unique即可实现需求,完全符合管道处理习惯:

# 导入数据,替换为你实际的CSV文件路径
$sourceData = Import-Csv -Path "C:\你的数据文件.csv"

# 统计每个Primary Identifier对应的唯一Secondary Identifier数量
$result = $sourceData | Group-Object -Property 'Primary Identifier' | ForEach-Object {
    [PSCustomObject]@{
        ID = $_.Name
        'Count of Secondary ID' = ($_.Group | Select-Object 'Secondary Identifier' -Unique).Count
    }
}

# 筛选出存在多个Secondary Identifier的记录
$multiIdRecords = $result | Where-Object { $_.'Count of Secondary ID' -gt 1 }

如果你需要实现类似Excel勾选多列删除重复值的功能,直接在Select-Object后指定所有需要匹配的列即可,和你预期的效果完全一致:

# 示例:按Primary、Secondary两列去重,等效于Excel勾选这两列删除重复值
$deduplicatedData = $sourceData | Select-Object 'Primary Identifier','Secondary Identifier' -Unique

方法2:大体积数据优化方案(适合无法全量加载到内存的超大文件)

用哈希集合逐行流处理,内存占用极低,不会因为数据量过大崩溃:

# 初始化存储映射,Key为Primary Identifier,Value为存唯一Secondary的哈希集合
$primaryMap = [ordered]@{}

# 逐行读取处理CSV,无需全量加载
Import-Csv -Path "C:\你的超大数据文件.csv" | ForEach-Object {
    $pid = $_.'Primary Identifier'
    $sid = $_.'Secondary Identifier'
    if (-not $primaryMap.ContainsKey($pid)) {
        $primaryMap[$pid] = [System.Collections.Generic.HashSet[string]]::new()
    }
    # 重复的Secondary ID会自动被哈希集合忽略
    $null = $primaryMap[$pid].Add($sid)
}

# 转换为预期的输出格式
$result = $primaryMap.GetEnumerator() | ForEach-Object {
    [PSCustomObject]@{
        ID = $_.Key
        'Count of Secondary ID' = $_.Value.Count
    }
}

# 筛选多标识符记录
$multiIdRecords = $result | Where-Object { $_.'Count of Secondary ID' -gt 1 }

两种方法都可以直接得到你预期的输出结构,筛选步骤和你提到的完全兼容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:30:01