首页 > 解决方案 > 有没有办法根据 Power Query 中的条件从另一列应用最小日期和相关值?

问题描述

我有一个相当大的电源查询(35k 行,但有很多列),我面临这样一种情况,有时我有一个销售订单与多个库存号相关联,我得到与多个工厂相关的多个计划日期。我需要将最早的计划日期及其关联工厂应用于该销售订单的所有行。我已经考虑将查询合并到自身 - 这似乎能够达到最小的计划日期。然而,这需要很长时间,我似乎仍然无法弄清楚如何获得该日期的关联工厂并应用于该销售订单的所有行。

以下是一些示例数据:

在此处输入图像描述

我需要做的是将红色的计划日期和工厂信息应用到 SO # 的所有其他行。这是可以在 Power Query 中完成的吗?

标签: excelpowerquery

解决方案


这是一些您可能能够适应您的真实数据的 MCode。

  • 使用您显示的数据作为起点
  • 按 SOP 分组#
  • 确定第一个日期和关联的工厂
  • 重新展开表格(原始日期/工厂列除外
let
    Source = Excel.CurrentWorkbook(){[Name="Table5"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"SO#", Int64.Type}, {"Stock #", Int64.Type}, {"Planned Date", type date}, {"Factory", type text}}),

//Group by SO#
// then return minimum date and corresonding factory
    #"Grouped Rows" = Table.Group(#"Changed Type", {"SO#"}, {
        {"All", each _, type table [#"SO#"=nullable number, #"Stock #"=nullable number, Planned Date=nullable date, Factory=nullable text]},
        {"Planned Date", each List.Min([Planned Date]), Date.Type},
        {"Factory", (t)=> List.Range(t[Factory],List.PositionOf(t[Planned Date],List.Min(t[Planned Date])),1){0}, Text.Type}
    }),

//Expand the table (except for the original date and factory columns
    #"Expanded All" = Table.ExpandTableColumn(#"Grouped Rows", "All", {"Stock #"}, {"Stock #"})
in
    #"Expanded All"

在此处输入图像描述


推荐阅读