如何在Power Query中基于多列条件添加PY Sales列?
在Power Query中添加PY Sales列的步骤
以下是严格匹配指定列来获取上年销售额的具体操作:
步骤1:复制当前数据表作为上年数据源
- 在Power Query编辑器中,右键点击你的销售数据表,选择复制,然后右键点击查询面板空白处,选择粘贴,将复制的表命名为
Sales_PY。
步骤2:处理上年数据表
- 选中
Sales_PY表,找到Fiscal Year列,右键选择更改类型确保它是数值类型(如果原本是字符串,先转成数值)。 - 添加自定义列,公式为:
删除原来的[Fiscal Year] - 1Fiscal Year列,把新列重命名为Fiscal Year。 - 只保留以下列:
Location、Fiscal Year、Period、Week、Item、Sales(你的销售额列名),然后把Sales列重命名为PY Sales。
步骤3:合并原表与上年数据表
- 回到原始销售数据表,点击主页选项卡中的合并查询 → 合并查询作为新列。
- 在合并窗口中:
- 上方选择原始数据表,依次勾选匹配列:
Location、Fiscal Year、Period、Week、Item。 - 下方选择
Sales_PY表,对应勾选相同的列:Location、Fiscal Year、Period、Week、Item。 - 连接类型选择左外部(确保原表所有行保留,无上年数据的显示空值)。
- 上方选择原始数据表,依次勾选匹配列:
- 点击确定后,会新增一列(默认名
Sales_PY),点击列标题右侧的展开按钮,只勾选PY Sales列,然后确定。
步骤4:处理空值(可选)
- 若新增地点或商品导致上年无数据,
PY Sales会显示空值。选中该列,点击转换选项卡中的替换值,把空值替换为0,方便后续计算。
补充:用M语言直接实现(适合熟悉M代码的用户)
你也可以直接在原始表的高级编辑器中添加以下代码(替换对应列名):
let Source = 你的原始数据源, // 复制并处理上年数据 Sales_PY = Table.RenameColumns(Table.SelectColumns(Table.TransformColumns(Source, {{"Fiscal Year", each _ - 1, Int64.Type}}), {"Location", "Fiscal Year", "Period", "Week", "Item", "Sales"}), {{"Sales", "PY Sales"}}), // 合并查询 Merged = Table.NestedJoin(Source, {"Location", "Fiscal Year", "Period", "Week", "Item"}, Sales_PY, {"Location", "Fiscal Year", "Period", "Week", "Item"}, "Sales_PY", JoinKind.LeftOuter), // 展开PY Sales列 Expanded = Table.ExpandTableColumn(Merged, "Sales_PY", {"PY Sales"}, {"PY Sales"}), // 替换空值为0(可选) ReplacedNulls = Table.ReplaceValue(Expanded, null, 0, Replacer.ReplaceValue, {"PY Sales"}) in ReplacedNulls
内容的提问来源于stack exchange,提问作者Reign of Error
相关产品推荐
相关产品推荐

