如何在 DAX Power BI 中按月细分日期范围?
How to break down date range by each month in DAX Power BI?
我有两个约会对象:
“2018-01-05”和“2019-01-05”
如何创建计算 table 以按月细分这些日期。
应该看起来像这样:
新建table为
Table = CALENDAR( DATE(2018, 5, 1), DATE(2019, 1, 5) - 1)
将自动生成的列 "Date" 重命名为 "Start Date"。添加新列为
End Date = Start Date + 1
可能有很多方法可以做到这一点,但这里有一种方法结合了几个不同的概念:
Table =
VAR Starting = DATE(2018, 1, 5)
VAR Ending = DATE(2019, 1, 5)
VAR MonthTable =
SUMMARIZE(
ADDCOLUMNS(
CALENDAR(Starting, Ending),
"StartDate", EOMONTH([Date], 0) + 1),
[StartDate],
"EndDate", EOMONTH([StartDate], 0) + 1)
RETURN UNION(
ROW("StartDate", Starting, "EndDate", EOMONTH(Starting, 0) + 1),
FILTER(MonthTable, [EndDate] < Ending && [StartDate] > Starting),
ROW("StartDate", EOMONTH(Ending, -1) + 1, "EndDate", Ending)
)
基本上,您从 CALENDAR
函数开始获取所有日期,用相应的月份标记每个日期,然后将 table 总结为仅 return 一行每个月。
由于第一行和最后一行有点不规则,我将它们添加到摘要月份 table 的过滤版本中,以获得您想要的 table。
我有两个约会对象:
“2018-01-05”和“2019-01-05”
如何创建计算 table 以按月细分这些日期。 应该看起来像这样:
新建table为
Table = CALENDAR( DATE(2018, 5, 1), DATE(2019, 1, 5) - 1)
将自动生成的列 "Date" 重命名为 "Start Date"。添加新列为
End Date = Start Date + 1
可能有很多方法可以做到这一点,但这里有一种方法结合了几个不同的概念:
Table =
VAR Starting = DATE(2018, 1, 5)
VAR Ending = DATE(2019, 1, 5)
VAR MonthTable =
SUMMARIZE(
ADDCOLUMNS(
CALENDAR(Starting, Ending),
"StartDate", EOMONTH([Date], 0) + 1),
[StartDate],
"EndDate", EOMONTH([StartDate], 0) + 1)
RETURN UNION(
ROW("StartDate", Starting, "EndDate", EOMONTH(Starting, 0) + 1),
FILTER(MonthTable, [EndDate] < Ending && [StartDate] > Starting),
ROW("StartDate", EOMONTH(Ending, -1) + 1, "EndDate", Ending)
)
基本上,您从 CALENDAR
函数开始获取所有日期,用相应的月份标记每个日期,然后将 table 总结为仅 return 一行每个月。
由于第一行和最后一行有点不规则,我将它们添加到摘要月份 table 的过滤版本中,以获得您想要的 table。