PowerBI - 删除0值的初始记录

时间:2017-05-19 15:55:42

标签: powerbi dax powerquery

我在PowerBI中有一个如下所示的表:

Date           StoreID       Car Sales     <Row Num (for explanation only)>
1/1/2017       1             0               1
1/2/2017       1             0               2
1/3/2017       1             0               3
1/4/2017       1             20              4 
1/5/2017       1             13              5
1/6/2017       1             0               6
1/7/2017       1             31              7

1/4/2017       2             0               8
1/5/2017       2             0               9
1/6/2017       2             7              10
1/7/2017       2             0              11
1/8/2017       2             10             12

我要做的是创建一个度量来计算每天的汽车销售量(所以在带有日期的X轴线图上),但是消除行/记录为0,直到第一个具有销售价值。换句话说,我想要消除第1,2和3行,但不要消除第6行,因为这是没有卖车的合法日子。我也希望为每个StoreID执行此操作,因此我想要消除第8行和第9行,但不是第11行。是否有任何方法可以提出在PowerBI中完成此操作的度量/列(或其他方法)?

1 个答案:

答案 0 :(得分:1)

您可以按StoreID进行分组,然后使用以下内容对每列进行转换:按[Date]排序,然后使用Table.Skip删除[Car Sales]为0的行。(按[Date]排序可能不太必要,但group by可以改变排序。)然后展开分组表。

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Date", type datetime}, {"StoreID", Int64.Type}, {"Car Sales", Int64.Type}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"StoreID"}, {{"Grouped", (grouped) => let
            #"Sorted Rows" = Table.Sort(grouped,{{"Date", Order.Ascending}}),
            SkipNoCarSales = Table.Skip(#"Sorted Rows", each [Car Sales] = 0)
        in
            SkipNoCarSales, type table}}),
    #"Expanded Grouped" = Table.ExpandTableColumn(#"Grouped Rows", "Grouped", {"Car Sales", "Date"}, {"Car Sales", "Date"}),
    #"Reordered Columns" = Table.ReorderColumns(#"Expanded Grouped",{"Car Sales", "StoreID", "Date"})
in
    #"Reordered Columns"