首页 > 解决方案 > 电量查询中的批量跟踪

问题描述

我有一个包含一些生产数据的 CSV。当加载到 Excels 电源查询中时,它具有与此类似的结构(材料批次可能包含旧材料批次的剩余部分作为回收材料):

Mat_Batch 日期 Recyc_Batch RawMaterial1 RawMaterial2 RawMaterial3 Amount1 Amount2 Amount3
123 01.11.2019 铁铬镍 70 19 11
234 01.12.2019 铁铬镍 71 18 11
345 01.02.2020 123 铁铬镍 72 17 9
456 01.01.2020 234 铁铬镍 70 19 11
567 01.02.2020 铁铬镍 72 16 10
678 01.01.2020 456 铁铬镍 70 19 11

另一个 CSV 具有以下内容(它只是将一个生产批次链接到一个物料批次;生产批次可能包含多个物料批次):

批处理 Mat_Batch
美国广播公司 456
美国广播公司 567
公元前 345 年

现在我想使用 power query m 来评估哪些材料批次确切地用于生产零件批次。例如,批次“abc”由 456 + 567 + 234 制成(作为 456 中的回收材料)。

作为第一步,我按特定批次过滤生产批次表,并通过生成的 Mat_Batch 列连接两个表。作为第二次迭代,我将 Recyc_Batch 列从匹配的材料批次中分离出来,并与我的材料批次表的副本进行第二次连接,以获得所有其他使用的回收材料。但是我怎么能做到“无限”次呢?我这样做的方式是,我必须为每次迭代创建额外的查询,但我需要一种方法来自动重复这些连接步骤,直到不再使用额外的回收材料。

标签: excelpowerquery

解决方案


这是您可以使用的查询(结果)(如果我理解正确)

let
    Quelle = Table.NestedJoin(tbl_Material, {"Mat_Batch"}, tbl_Production, {"Mat_Batch"}, "tbl_Production", JoinKind.LeftOuter),
    Combine_Sources = Table.ExpandTableColumn(Quelle, "tbl_Production", {"Batch"}, {"Batch"}),
    DeleteOtherColumns = Table.SelectColumns(Combine_Sources,{"Batch", "Mat_Batch", "Recyc_Batch"}),
    UnpivotOtherColumns = Table.UnpivotOtherColumns(DeleteOtherColumns, {"Batch"}, "Attribut", "Wert"),
    FilterRows = Table.SelectRows(UnpivotOtherColumns, each ([Batch] <> null)),
    SortRows = Table.Sort(FilterRows,{{"Batch", Order.Ascending}})
in
    SortRows

结果看起来像这样 电源查询结果 最好的问候克里斯


推荐阅读