过滤器的Power BI日期范围自定义列

时间:2020-07-07 14:40:42

标签: powerbi powerquery powerbi-desktop m

我在Power BI中有一个日历表,该日历表链接到另外两个表,一个表按日期占用,另一个表按日期预测占用。第二张表很适合将来。

我希望该报告的滚动范围为15天,即今天之前的7天和未来的7天。我尝试使用以下方法创建自定义列:

ReportRange = IF(DATESBETWEEN(Calendar [SQL_Date],(TODAY()-7),(TODAY()+ 7)),1,0)

我得到一个响应“未检测到语法错误”。 No syntax error

但是,当我单击“确定”时,我会看到一个黄色的条/警告: “ Expression.Error:无法识别名称'IF'。请确保其拼写正确。”

有人可以帮忙吗? 谢谢!

4 个答案:

答案 0 :(得分:1)

您需要在M code中而不是DAX中的查询编辑器中编写自定义列。

类似的事情可能起作用:

if Date.IsInPreviousNDays([SQL_Date], 7) and Date.IsInNextNDays([SQL_Date], 7)
then 1
else 0

不过,您可能更喜欢使用relative date filtering

答案 1 :(得分:0)

您试图通过自定义列编辑器使用PowerQuery M语言列。这在M中不起作用。您将需要在DAX中创建一个度量以进行计算。

在DAX中,您可以使用DatesBetween https://ionicframework.com/docs/angular/platform

=CALCULATE(SUM(InternetSales_USD[SalesAmount_USD]), DATESBETWEEN(DateTime[DateKey],  
    DATE(2007,6,1),  
    DATE(2007,8,31)  
  ))  

您可以使用as per this example进行当前日期以外的计算。

TODAY keyword

答案 2 :(得分:0)

对于“滚动”过滤器,我发现将日/周/月/季度的通用偏移量列构建到日期表中非常有用。这样您就可以轻松过滤视觉效果,例如使用“周偏移量”> 1和“周偏移量” <-1来获得2周滚动视图...详细的操作方法可在此处找到:https://radacad.com/offset-columns-for-the-date-table-flexibility-in-relative-date-filtering-for-power-bi

答案 3 :(得分:0)

如果只想过滤报表中输入的数据,则可以使用过滤器。

您可以在高级编辑器(以下示例)中执行此操作。

let
    Source = BillingData,
    #"Removed Other Columns" = Table.SelectColumns(Source,{"Date"}),
    #"Changed Type" = Table.TransformColumnTypes(#"Removed Other Columns",{{"Date", type date}}),
    #"Removed Duplicates" = Table.Distinct(#"Changed Type"),
    #"Filtered Rows" = Table.SelectRows(#"Removed Duplicates", each Date.IsInPreviousNDays(Date.AddDays(DateTime.LocalNow(), 7), 14))
in
    #"Filtered Rows"

我从标准日期过滤器开始,并使用高级编辑器对其进行了自定义,以添加7天,然后减去14天。

enter image description here