我在Power BI中有一个日历表,该日历表链接到另外两个表,一个表按日期占用,另一个表按日期预测占用。第二张表很适合将来。
我希望该报告的滚动范围为15天,即今天之前的7天和未来的7天。我尝试使用以下方法创建自定义列:
ReportRange = IF(DATESBETWEEN(Calendar [SQL_Date],(TODAY()-7),(TODAY()+ 7)),1,0)
但是,当我单击“确定”时,我会看到一个黄色的条/警告: “ Expression.Error:无法识别名称'IF'。请确保其拼写正确。”
有人可以帮忙吗? 谢谢!
答案 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进行当前日期以外的计算。
答案 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天。