Power Query MAX值来自表格

时间:2017-09-04 16:10:47

标签: powerquery

我试图通过电源查询将表中的MAX日期放到另一个日期。目前我被困住了,我得到的只是一张基于条件的表格。不确定这是否清楚,所以我将用代码解释。这是我目前的代码:

let
    Source = Table.NestedJoin(Table.NestedJoin(SKU,{"SKU"},q_UltColh_NEW,{"SKU"},"qUltColh_NEW",JoinKind.LeftOuter),{"SKU"},r_STK,{"SKU"},"Rep_Stk", JoinKind.LeftOuter),
.
.
.
#"Expanded Origem" = ...
    #"Expanded Origem" = Table.ExpandTableColumn(#"Merged Queries", "Origem", {"Desc_ORI", "Parent_ORI"}, {"Origem.Desc_ORI", "Origem.Parent_ORI"}),
    #"Added Last_Rec" = Table.AddColumn(#"Expanded Origem", "Last_Rec", each 
                                                            let SKU = [SKU]
                                                            in Table.SelectRows(r_GOODSREC,each [SKU]=SKU)
)
in
    #"Added Last_Rec"

我有两张桌子:

SKU     Desc
46_24_  ABC
103_5_  DEF

doc_DATE    RowNo   SKU     Cod_ART     QTT
10/01/2017  1       46_24_  46.24       50
14/01/2017  1       46_24_  46.24       100
14/01/2017  1       103_5_  103.5       50
16/01/2017  1       103_5_  103.5       100

我想得到:

SKU     Desc    Last_Entry  Qtt
46_24_  ABC     14/01/2017  50
103_5_  DEF     16/01/2017  100

我的代码返回一个包含各种列的表:     SKU Desc Last_Entry
    46_24_ ABC表
    103_5_ DEF表

我相信一旦我获得最大值,我就可以开始使用桌子,除非你告诉我这是一个糟糕的意识形态。

非常感谢,

1 个答案:

答案 0 :(得分:0)

我用下面的代码得到了这个:

enter image description here

注意:

1。我的日期格式是月/日/年,而您的日期格式是日/月/年。

2。此外,在您的问题中,您显示SKU 46_24_的预期QTT为50;但是您的源表有100个作为最新日期为SKU 46_24_的QTT,这就是为什么我的表有100而不是50。

我使用了与你相同的两个起始表。我称他们为Table1和Table2。 (表1是仅包含SKU和Desc列的那个。)

然后我使用左外连接将这两个表合并到一个名为Merge1的新表中。

我猜关键点是:

我使用“Group By”(即Table.Group)按每个SKU分组并在名为Last_Entry的列中获取其最大日期值,并且我将所有行数据包含在名为AllData的列中。这是Group By弹出窗口:

enter image description here

然后,在Group By之后,我在AllData中展开了嵌入式表,并添加了一个新列来标记并过滤掉doc_Date不等于Last_Entry的行。

let
Source = Table.NestedJoin(Table1,{"SKU"},Table2,{"SKU"},"Table2",JoinKind.LeftOuter),
#"Expanded Table2" = Table.ExpandTableColumn(Source, "Table2", {"doc_Date", "RowNo", "SKU", "Cod_ART", "QTT"}, {"doc_Date", "RowNo", "SKU.1", "Cod_ART", "QTT"}),
#"Changed Type" = Table.TransformColumnTypes(#"Expanded Table2",{{"doc_Date", type date}}),
#"Grouped Rows" = Table.Group(#"Changed Type", {"SKU"}, {{"Last_Entry", each List.Max([doc_Date]), type datetime}, {"AllData", each _, type table}}),
#"Expanded AllData1" = Table.ExpandTableColumn(#"Grouped Rows", "AllData", {"Desc", "doc_Date", "QTT"}, {"Desc", "doc_Date", "QTT"}),
#"Added Custom" = Table.AddColumn(#"Expanded AllData1", "Custom", each if[Last_Entry]=[doc_Date] then "Last_Entry" else "NotLast_Entry"),
#"Filtered Rows" = Table.SelectRows(#"Added Custom", each ([Custom] = "Last_Entry")),
#"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Custom", "doc_Date"}),
#"Reordered Columns" = Table.ReorderColumns(#"Removed Columns",{"SKU", "Desc", "Last_Entry", "QTT"})
in
#"Reordered Columns"