用于过滤器的 Power BI 日期范围自定义列
Power BI date range custom column for filter
我在 Power BI 中有一个日历 table 链接到另外两个 table,一个按日期显示占用率,另一个按日期预测占用率。第二个 table 进入未来。
我希望报告具有 15 天的滚动范围,今天之前 7 天和未来 7 天。我尝试使用以下方法创建自定义列:
ReportRange = IF(DATESBETWEEN (日历[SQL_Date], (TODAY()-7), (TODAY()+7)),1,0)
我收到“未检测到语法错误”的响应。
但是当我点击“确定”时,我得到一个黄色 bar/warning:
“Expression.Error:无法识别名称 'IF'。确保拼写正确。”
有人可以帮忙吗?
谢谢!
您正在尝试通过自定义列编辑器使用 PowerQuery M 语言列。这在 M 中不起作用。您需要在 DAX 中创建一个度量来进行计算。
在您的 DAX 中,您可以使用 DatesBetween,as per this example:
=CALCULATE(SUM(InternetSales_USD[SalesAmount_USD]), DATESBETWEEN(DateTime[DateKey],
DATE(2007,6,1),
DATE(2007,8,31)
))
您可以使用 TODAY keyword 计算当前日期。
对于“滚动”过滤器,我发现将 day/week/month/quarter 的通用偏移列构建到您的日期 table 中非常有用。有了它,您可以轻松过滤视觉效果,例如使用“week offset”> 1 和“week offset”<-1 来获得滚动 2 周的视图......详细的方法可以在这里找到:https://radacad.com/offset-columns-for-the-date-table-flexibility-in-relative-date-filtering-for-power-bi
您需要在 M code 的查询编辑器中编写自定义列,而不是 DAX。
类似这样的方法可能有效:
if Date.IsInPreviousNDays([SQL_Date], 7) and Date.IsInNextNDays([SQL_Date], 7)
then 1
else 0
不过您可能更愿意使用 relative date filtering。
如果您只想过滤进入报告的数据,您可以使用过滤器。
您可以在高级编辑器中执行此操作,示例如下。
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。
我在 Power BI 中有一个日历 table 链接到另外两个 table,一个按日期显示占用率,另一个按日期预测占用率。第二个 table 进入未来。
我希望报告具有 15 天的滚动范围,今天之前 7 天和未来 7 天。我尝试使用以下方法创建自定义列:
ReportRange = IF(DATESBETWEEN (日历[SQL_Date], (TODAY()-7), (TODAY()+7)),1,0)
我收到“未检测到语法错误”的响应。
但是当我点击“确定”时,我得到一个黄色 bar/warning: “Expression.Error:无法识别名称 'IF'。确保拼写正确。”
有人可以帮忙吗? 谢谢!
您正在尝试通过自定义列编辑器使用 PowerQuery M 语言列。这在 M 中不起作用。您需要在 DAX 中创建一个度量来进行计算。
在您的 DAX 中,您可以使用 DatesBetween,as per this example:
=CALCULATE(SUM(InternetSales_USD[SalesAmount_USD]), DATESBETWEEN(DateTime[DateKey],
DATE(2007,6,1),
DATE(2007,8,31)
))
您可以使用 TODAY keyword 计算当前日期。
对于“滚动”过滤器,我发现将 day/week/month/quarter 的通用偏移列构建到您的日期 table 中非常有用。有了它,您可以轻松过滤视觉效果,例如使用“week offset”> 1 和“week offset”<-1 来获得滚动 2 周的视图......详细的方法可以在这里找到:https://radacad.com/offset-columns-for-the-date-table-flexibility-in-relative-date-filtering-for-power-bi
您需要在 M code 的查询编辑器中编写自定义列,而不是 DAX。
类似这样的方法可能有效:
if Date.IsInPreviousNDays([SQL_Date], 7) and Date.IsInNextNDays([SQL_Date], 7)
then 1
else 0
不过您可能更愿意使用 relative date filtering。
如果您只想过滤进入报告的数据,您可以使用过滤器。
您可以在高级编辑器中执行此操作,示例如下。
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。