在powerbi中使用dax的时间智能切片器的累积和
Cumulative sum with time-intelligent slicer using dax in powerbi
我是 Power BI 的新手,我正在研究此度量以显示特定时间段的累计总和。
案例和我想要的:
我有一个日历 table [DateKey] 和主要数据 table [Data],它们具有基于列日期的关系。
我需要显示折线图和簇状柱形图以及时间切片器的视觉效果,其中基于切片器的收入累计总和。
例如:我有 7 月的收入 table,我将 DateKey[Month] 列作为切片器,当我选择 7 月时,视觉效果将显示 7 月的收入累计总和(从 1 日开始)至 7 月 31 日)
当我选择八月时,视觉效果将显示八月的累计总收入(从 8 月 1 日到 31 日)
我尝试了什么:我使用了以下 DAX
Cumulative Sum Rev = CALCULATE(
SUM(Data[Revenue]),
FILTER(
ALL(Data),
Data[Date]<=MAX(Data[Date])
)
)
实际结果:它确实创建了一条累积总和线,但对于七月来说还不错。如果我在切片器中选择八月,它将是七月到八月的累计总和。我预计是从八月份开始累计,而不是从七月份开始。
我尝试了另一种解决方案,它使用 ALLEXCEPT 而不是 ALL,但它似乎不适用于日期列(你可以在 pbix 文件中看到我的措施已经有了它,但要过滤另一列 [Lead_type],这对另一个切片器来说工作得很好)
Cumulative Sum Rev = CALCULATE(
SUM(Data[Revenue]),
FILTER(
ALLEXCEPT(Data,Data[Lead_type]),
Data[Date]<=MAX(Data[Date])
)
)
请帮忙指出我错在哪里。
这是我的 pbix 文件的 link,它包括我的视觉效果和尺寸:
https://1drv.ms/u/s!As4H0zrXywmbhaVFDprZ6RJmFUMbbg?e=l4Wxe5
您所追求的是“月初至今”的衡量标准。这是 DAX 中的内置时间智能功能 - 您还可以使用正确的变量和 DAX 语法制作自己的版本 - 这具有更大的灵活性。但是,对于这种情况,这应该可以解决问题:
首先添加一个对 Revenue 列求和的度量。拥有这些简单的聚合度量总是明智的——当您在其他度量中使用这些度量时,它们会自动包装在 CALCULATE
语句中,这避免了一些混淆:
Revenue Amount := SUM ( Data[Revenue] )
然后添加一个 TOTALMTD
度量,它将第一个度量作为第一个参数,并将您的日期列作为第二个参数。注意:日期列在您的 DateKey
table 中 - 不要在您的事实 table 中为此使用日期列:
Cumulative sum =
TOTALMTD (
[Revenue Amount] ,
DateKey[Date]
)
您还应该阅读有关日历 table 的内容,以及使用 ADDCOLUMNS
创建 table 与在计算的 [=25 之上添加单独的计算列之间的区别=].我将从这里开始:https://www.sqlbi.com/articles/creating-a-simple-date-table-in-dax/
我是 Power BI 的新手,我正在研究此度量以显示特定时间段的累计总和。
案例和我想要的:
我有一个日历 table [DateKey] 和主要数据 table [Data],它们具有基于列日期的关系。 我需要显示折线图和簇状柱形图以及时间切片器的视觉效果,其中基于切片器的收入累计总和。
例如:我有 7 月的收入 table,我将 DateKey[Month] 列作为切片器,当我选择 7 月时,视觉效果将显示 7 月的收入累计总和(从 1 日开始)至 7 月 31 日) 当我选择八月时,视觉效果将显示八月的累计总收入(从 8 月 1 日到 31 日)
我尝试了什么:我使用了以下 DAX
Cumulative Sum Rev = CALCULATE(
SUM(Data[Revenue]),
FILTER(
ALL(Data),
Data[Date]<=MAX(Data[Date])
)
)
实际结果:它确实创建了一条累积总和线,但对于七月来说还不错。如果我在切片器中选择八月,它将是七月到八月的累计总和。我预计是从八月份开始累计,而不是从七月份开始。
我尝试了另一种解决方案,它使用 ALLEXCEPT 而不是 ALL,但它似乎不适用于日期列(你可以在 pbix 文件中看到我的措施已经有了它,但要过滤另一列 [Lead_type],这对另一个切片器来说工作得很好)
Cumulative Sum Rev = CALCULATE(
SUM(Data[Revenue]),
FILTER(
ALLEXCEPT(Data,Data[Lead_type]),
Data[Date]<=MAX(Data[Date])
)
)
请帮忙指出我错在哪里。
这是我的 pbix 文件的 link,它包括我的视觉效果和尺寸: https://1drv.ms/u/s!As4H0zrXywmbhaVFDprZ6RJmFUMbbg?e=l4Wxe5
您所追求的是“月初至今”的衡量标准。这是 DAX 中的内置时间智能功能 - 您还可以使用正确的变量和 DAX 语法制作自己的版本 - 这具有更大的灵活性。但是,对于这种情况,这应该可以解决问题:
首先添加一个对 Revenue 列求和的度量。拥有这些简单的聚合度量总是明智的——当您在其他度量中使用这些度量时,它们会自动包装在 CALCULATE
语句中,这避免了一些混淆:
Revenue Amount := SUM ( Data[Revenue] )
然后添加一个 TOTALMTD
度量,它将第一个度量作为第一个参数,并将您的日期列作为第二个参数。注意:日期列在您的 DateKey
table 中 - 不要在您的事实 table 中为此使用日期列:
Cumulative sum =
TOTALMTD (
[Revenue Amount] ,
DateKey[Date]
)
您还应该阅读有关日历 table 的内容,以及使用 ADDCOLUMNS
创建 table 与在计算的 [=25 之上添加单独的计算列之间的区别=].我将从这里开始:https://www.sqlbi.com/articles/creating-a-simple-date-table-in-dax/