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

Power Query条件合并展开:按日期返回Hierarquia数据或NULL

解决方案:Power Query条件返回层级表字段值

不要直接展开嵌套表,而是先对嵌套的Hierarquia表做条件筛选,再展开,这样不符合条件的字段会自动返回NULL,同时保留所有行。

修改后的完整代码

let
    // 保持原有左连接逻辑
    Data = Table.NestedJoin(União, {"cod_parceiro"}, Hierarquia, {"cod_parceiro"}, "Hierarquia", JoinKind.LeftOuter),
    // 添加自定义列,筛选符合日期条件的层级数据
    #"筛选符合条件的层级数据" = Table.AddColumn(Data, "符合条件的Hierarquia", each 
        let
            // 根据status判断使用的日期字段
            判断日期 = if [status] = "PAGO" or [status] = "ESTORNO" then [data_pagamento] else [data_digitacao],
            // 筛选层级表中日期范围匹配的行
            筛选后的表 = Table.SelectRows([Hierarquia], each 判断日期 >= [data_inicial] and 判断日期 <= [data_final])
        in
            // 如果筛选后无数据,返回空表;否则返回筛选结果
            if Table.RowCount(筛选后的表) = 0 then #table(type table[grupo_de_loja=null, nome_parceiro=null, comercial=null, regional=null, potencial=null, data_inicial=null, data_final=null], {}) else 筛选后的表),
    // 展开处理后的层级表字段
    #"展开符合条件的层级数据" = Table.ExpandTableColumn(#"筛选符合条件的层级数据", "符合条件的Hierarquia", {"grupo_de_loja", "nome_parceiro", "comercial", "regional", "potencial", "data_inicial", "data_final"}, {"grupo_de_loja", "nome_parceiro", "comercial", "regional", "potencial", "data_inicial", "data_final"}),
    // 移除原有的嵌套列(可选步骤)
    #"移除原嵌套列" = Table.RemoveColumns(#"展开符合条件的层级数据", {"Hierarquia"})
in
    #"移除原嵌套列"

关键逻辑说明

  • 先通过Table.AddColumn处理每行的嵌套Hierarquia表:
    1. 根据status字段判断,使用data_pagamento或data_digitacao作为日期判断基准
    2. 用Table.SelectRows筛选层级表中日期在指定范围内的行
    3. 若筛选后无匹配数据,返回结构一致的空表,确保展开后对应字段为NULL
  • 展开处理后的自定义列,此时不符合条件的行对应的层级字段自动填充为NULL,同时保留所有原始行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:15:06