如何根据切片器值动态更改/过滤数据范围?

时间:2021-07-26 07:10:14

标签: powerbi

最近我在比较模型的准确性。 这个模型有很多版本,V1,V2,V3..... 每个版本都包含不同月份的值,例如: V1(一月至三月) V2(二月至四月) V3(三月至五月) .. .. ..

数据与日期表相关联。

另外,它是一个日常模型,模型可能包含0值。为了显示为 0 值,我使用 isblank then 0 函数来显示 0 值,如下所示:

enter image description here

但是,正如我上面提到的,V1只包含1月-3月的数据,因此,当我尝试使用切片器过滤其他版本(例如4月-6月)时,由于函数强制显示0值,所以有图中的水平线如下所示:

enter image description here

这使得折线图很难阅读。因此,我想在单击切片器时自动将日期范围过滤到合适的日期范围(例如,当我选择 V1 时,它只显示一月至三月)。

有什么办法可以做到这一点?非常感谢!

1 个答案:

答案 0 :(得分:0)

如果我猜你的表名是 your_data_table_name 并且你有下面这些列-

Date
version
value

...and other columns

现在,您可以在 Power Query 编辑器中使用下面的M Qquery从源表your_data_table_name创建一个新表。

注意用下面代码中的表名更改表名。

let 
    Source = #"your_data_table_name",
    #"Removed Other Columns" = Table.SelectColumns(Source,{"Date", "Version"}),
    #"Grouped Rows" = Table.Group(#"Removed Other Columns", {"Version"}, {{"min_date", each List.Min([Date]), type nullable date}, {"max_date", each List.Max([Date]), type nullable date}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each Duration.Days([max_date] - [min_date]) + 1),
    #"Added Custom1" = Table.AddColumn(#"Added Custom", "Custom.1", each List.Numbers(1, [Custom])),
    #"Expanded Custom.1" = Table.ExpandListColumn(#"Added Custom1", "Custom.1"),
    #"Added Custom2" = Table.AddColumn(#"Expanded Custom.1", "Custom.2", each Date.AddDays([min_date], [Custom.1] - 1)),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom2",{"min_date", "max_date", "Custom", "Custom.1"}),
    #"Merged Queries" = Table.NestedJoin(#"Removed Columns", {"Version", "Custom.2"}, your_data_table_name, {"Version", "Date"}, "your_data_table_name", JoinKind.LeftOuter),
    #"Expanded your_data_table_name" = Table.ExpandTableColumn(#"Merged Queries", "your_data_table_name", {"Value"}, {"your_data_table_name.Value"}),
    #"Replaced Value" = Table.ReplaceValue(#"Expanded your_data_table_name",null,0,Replacer.ReplaceValue,{"your_data_table_name.Value"}),
    #"Renamed Columns" = Table.RenameColumns(#"Replaced Value",{{"Custom.2", "Date"}, {"your_data_table_name.Value", "Value"}}),
    #"Changed Type" = Table.TransformColumnTypes(#"Renamed Columns",{{"Date", type date}})
in
    #"Changed Type"

您最终将拥有以下数据-

enter image description here

现在您可以从新表中创建切片器(单选)。同时使用新表中的日期列创建折线图。最终输出如下-

enter image description here