有没有办法比较行并根据列替换值?

时间:2021-07-06 14:55:28

标签: powerbi powerquery m

现在我正在为一家物流企业开展一个项目,他们希望在 Power BI 上可视化一些 KPI。目前,我们一直致力于可视化装载机(在仓库装载集装箱的人员)的平均时间,到目前为止一切都非常简单。

直到我们意识到有一种情况,两个装载机可以互相帮助装载一个容器,但我们遇到了一些麻烦。

情况是这样的:

Two Loaders loaded the same container, one loaded 17 items the other loaded just 1

我们宁愿将第二个加载器 (JMORGAN) 替换为第一个加载器的名称 (CBORDEAUX),这样看起来就好像整个容器都被第一个加载器加载了,通常情况下,容器属于具有更多加载器的加载器加载的项目(在平局的情况下,开始加载的项目)。

我想我可以通过添加一个自定义列来解决这个问题,该列根据一系列规则返回加载程序名称,这些规则是:

1 - 如果容器在一天内出现多次

2 - 如果加载的项目总数 <= 18,因为 18 是每个容器的最大项目数,并且容器每天可以加载两次,因此它们可能因此出现多次。

这是我想到的自定义列的代码,但它没有返回任何内容

if List.Count(
    Table.SelectRows(
       #"Changed Type1",
        (C) => [Destination TU] = C[Destination TU]
    )[Destination TU]
) > 1
and List.Sum(Table.SelectColumns(
     Table.SelectRows(
       #"Changed Type1",
        (C) => [Destination TU] = C[Destination TU]
    )[Destination TU], [Palers Loaded])[Palers Loaded]
) <= 18
then 
Table.SelectRows( #"Changed Type1",
        (C) => [Destination TU] = C[Destination TU]
, [Palers Loaded] = List.Max(
            Table.SelectColumns(
     Table.SelectRows(
       #"Changed Type1",
        (C) => [Destination TU] = C[Destination TU]
    )[Destination TU], [Palers Loaded] )
  )
)
else [Confirmed by]

这是查询的照片,以便您参考

Query

let
    Source = Sheet1,
    #"Filtered Rows" = Table.SelectRows(Source, each ([Warehouse Task Status] = "C") and ([Whse Proc. Type] = "OL01")),
    #"Changed Type2" = Table.TransformColumnTypes(#"Filtered Rows",{{"Confirmation Time", type time}}),
    #"Filas filtradas" = Table.SelectRows(#"Changed Type2", each [Confirmation Time] > #time(4, 0, 0)),
    #"Grouped Rows" = Table.Group(#"Filas filtradas", {"Confirmation Date", "Destination TU", "Confirmed by"}, {{"Palers Loaded", each Table.RowCount(_), Int64.Type}, {"Task starting time", each List.Min([Confirmation Time]), type nullable time}, {"Task finishing time", each List.Max([Confirmation Time]), type nullable time}}),
    #"Changed Type" = Table.TransformColumnTypes(#"Grouped Rows",{{"Task starting time", type time}, {"Task finishing time", type time}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each [Task finishing time]-[Task starting time]),
    #"Changed Type1" = Table.TransformColumnTypes(#"Added Custom",{{"Custom", type duration}}),
    #"Renamed Columns" = Table.RenameColumns(#"Changed Type1",{{"Custom", "Load time"}}),
    #"Sorted Rows" = Table.Sort(#"Renamed Columns",{{"Confirmation Date", Order.Ascending}, {"Destination TU", Order.Ascending}, {"Task starting time", Order.Ascending}})
in
    #"Sorted Rows"

0 个答案:

没有答案