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

Power Query:统计Sprint_开头列非空值并删除该类列的实现

Power Query 处理动态Sprint列解决方案

核心思路

先提取所有符合规则的Sprint列名,再针对每行仅统计这些列的非空值,最后批量删除Sprint列。

分步实现代码

  1. 提取Sprint列名列表
    先定义一个列表存储所有以Sprint_开头的列名,后续操作复用这个列表:

    SprintColumns = List.Select(Table.ColumnNames(Source), each Text.StartsWith(_, "Sprint_"))
    
  2. 添加非空值统计列
    用Record.SelectFields从每行记录中仅筛选出Sprint列,再提取字段值并统计非空数量,解决之前的类型不匹配问题:

    TableWithCount = Table.AddColumn(Source, "Sprint_NonNull_Count", each List.NonNullCount(Record.FieldValues(Record.SelectFields(_, SprintColumns))))
    
  3. 批量删除Sprint列
    直接用之前定义的列名列表删除所有目标列:

    FinalTable = Table.RemoveColumns(TableWithCount, SprintColumns)
    

完整可运行代码

将以下代码替换到Power Query编辑器的脚本中(注意替换Source为你实际读取CSV的步骤):

let
    Source = Csv.Document(File.Contents("你的CSV文件路径"), [Delimiter=",", Encoding=1252, QuoteStyle=QuoteStyle.Csv]),
    // 替换为你读取CSV的实际Source代码
    SprintColumns = List.Select(Table.ColumnNames(Source), each Text.StartsWith(_, "Sprint_")),
    TableWithCount = Table.AddColumn(Source, "Sprint_NonNull_Count", each List.NonNullCount(Record.FieldValues(Record.SelectFields(_, SprintColumns)))),
    FinalTable = Table.RemoveColumns(TableWithCount, SprintColumns)
in
    FinalTable

问题原因解释

之前的类型不匹配是因为错误地将「列总数统计代码(返回单个数值)」和「整行字段值统计代码(返回每行的列表)」强行结合,逻辑上不兼容。正确的做法是先筛选目标列,再针对每行提取这些列的字段值进行统计,确保数据类型统一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 10:17:29