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

Power Query需求:替换指定Price Sub Group的NPTR为On Premise对应值

Power Query 替换特定分组NPTR值解决方案

问题说明

我是Power Query新手,遇到如下问题:多个Price Sub Group(含TIER I、TIER II、LEGACY I、LEGACY II、AIRPORT、CONCESSIONS)的NPTR值有误,需将这些分组的NPTR值替换为对应产品的On Premise Price Sub Group的NPTR值。尝试创建自定义列实现,但无法精准引用单个产品对应的On Premise分组NPTR值(当前代码会引用整列,不够精准)。

尝试的代码

= Table.AddColumn(#"Replaced Value2", "Custom", each if List.Contains ({"TIER I", "TIER II", "LEGACY I", "LEGACY II", "AIRPORT", "CONCESSIONS"},[Price Sub Group]) then [NPTR] else [FPTR])

解决方案

要实现精准匹配,核心是先为每个产品关联其对应的On Premise分组NPTR值,再进行替换,步骤如下:

1. 提取并关联On Premise分组的NPTR值

先筛选出所有Price Sub Group = "On Premise"的行,再通过产品唯一标识(比如产品ID、产品名称,以下示例用Product ID代表)将原表与筛选后的表合并,获取每个产品对应的On Premise NPTR:

let
    Source = 你的数据源,
    // 筛选出On Premise分组的行,保留产品标识和NPTR
    OnPremiseNPTR = Table.SelectRows(Source, each [Price Sub Group] = "On Premise"),
    OnPremiseClean = Table.SelectColumns(OnPremiseNPTR, {"Product ID", "NPTR"}),
    OnPremiseRename = Table.RenameColumns(OnPremiseClean, {{"NPTR", "OnPremise_NPTR"}}),
    // 按产品ID合并原表与On Premise数据
    Merged = Table.NestedJoin(Source, {"Product ID"}, OnPremiseRename, {"Product ID"}, "OnPremiseData", JoinKind.LeftOuter),
    // 展开关联得到的OnPremise_NPTR列
    Expanded = Table.ExpandTableColumn(Merged, "OnPremiseData", {"OnPremise_NPTR"}, {"OnPremise_NPTR"})
in
    Expanded

2. 创建自定义列完成替换

基于上面的结果,创建自定义列判断当前分组是否在目标列表中,是则使用关联得到的OnPremise_NPTR,否则保留原NPTR:

= Table.AddColumn(Expanded, "Corrected NPTR", each if List.Contains({"TIER I", "TIER II", "LEGACY I", "LEGACY II", "AIRPORT", "CONCESSIONS"}, [Price Sub Group]) then [OnPremise_NPTR] else [NPTR])

注意事项

  • 请将代码中的Product ID替换为你表中实际用于标识同一产品的列名,确保关联匹配的准确性。
  • 若表中没有明确的产品唯一标识,需先确认能关联同一产品的字段,否则无法实现精准匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 12:21:06