Powerbi 功率Bi-基于所选期间值的前一年期间总计

Powerbi 功率Bi-基于所选期间值的前一年期间总计,powerbi,dax,Powerbi,Dax,问题: 计算切片器中所选期间的上一年期间总数。表中有金额、期间和日期,即2020年11月11日为2020年1月11日,以期间为基础 尝试: 选择的切片器周期为2020年10月和2020年11月。 表visual包含期间和金额列。数据模型表包含列、科目、金额、期间和期间日期。每个期间的多个帐户将具有相同的期间日期,以便对期间进行排序。例如,账户1到3都将2020年1月11日作为2020年11月11日的期间日期。为计算去年金额而创建的计算方法如下: 去年同期合计= 算计( 总和('表'[金额]) ,

问题:

计算切片器中所选期间的上一年期间总数。表中有金额、期间和日期,即2020年11月11日为2020年1月11日,以期间为基础

尝试:

选择的切片器周期为2020年10月和2020年11月。 表visual包含期间和金额列。数据模型表包含列、科目、金额、期间和期间日期。每个期间的多个帐户将具有相同的期间日期,以便对期间进行排序。例如,账户1到3都将2020年1月11日作为2020年11月11日的期间日期。为计算去年金额而创建的计算方法如下:

去年同期合计= 算计( 总和('表'[金额]) ,过滤器( “桌子” ,SAMEPERIODLASTYEAR('表'[期间日期]) ) )

结果:

计算出的度量值被添加到表中,但仅显示切片器中所选期间的金额,而不显示上一年同期的金额。 因此,2020年10月的金额为2000美元,计算结果应显示2019年10月的金额,即1500美元

期间|金额|去年期间总计 11/2020 $2000 $2000 10/202. $1500 $1500 预期结果:

期间|金额|去年期间总计 11/2020 $2000 $1500
10/2020$1500$1000要使用类似sameperiodlastyear的时间智能,必须使用日期表(标记为日期表)。请阅读以下说明:

为了使用任何时间智能计算,您需要一个格式良好的日期表。日期表必须满足以下要求:

所需年份的所有日期都必须存在。日期表必须始终从1月1日开始,到12月31日结束,包括此范围内的所有日期。如果报告仅引用会计年度,则日期表必须包含从会计年度的第一天到最后一天的所有日期。例如,如果2008财年从2007年7月1日开始,则日期表必须包括从2007年7月1日到2008年6月30日的所有日期。 需要有一个包含唯一值的DateTime或Date数据类型的列。此列通常称为日期。尽管Date列通常用于定义与其他表的关系,但这不是必需的。但是,日期列必须包含唯一的值,并且应该由标记为日期表功能引用。如果列还包含时间部分,则不应使用时间–例如,时间应始终为上午12:00。 如果日期表和任何其他表之间的关系不基于日期,则必须在模型中将日期表标记为日期表。 评论 dates参数可以是以下任一参数:

对日期/时间列的引用。只有在这种情况下,才会应用上下文转换,因为列引用被替换为 可计算的(不同的()) 返回一列日期/时间值的表表达式。 定义日期/时间值的单列表的布尔表达式。 结果表仅包括dates列中存在的日期

内部SAMEPERIODLASTYEAR对应于以下DATEADD调用:

DATEADD ( <Dates>, -1, YEAR )
DATEADD(,-1,年)

要使用类似sameperiodlastyear的时间智能,必须使用日期表(标记为日期表)。请阅读以下说明:

为了使用任何时间智能计算,您需要一个格式良好的日期表。日期表必须满足以下要求:

所需年份的所有日期都必须存在。日期表必须始终从1月1日开始,到12月31日结束,包括此范围内的所有日期。如果报告仅引用会计年度,则日期表必须包含从会计年度的第一天到最后一天的所有日期。例如,如果2008财年从2007年7月1日开始,则日期表必须包括从2007年7月1日到2008年6月30日的所有日期。 需要有一个包含唯一值的DateTime或Date数据类型的列。此列通常称为日期。尽管Date列通常用于定义与其他表的关系,但这不是必需的。但是,日期列必须包含唯一的值,并且应该由标记为日期表功能引用。如果列还包含时间部分,则不应使用时间–例如,时间应始终为上午12:00。 如果日期表和任何其他表之间的关系不基于日期,则必须在模型中将日期表标记为日期表。 评论 dates参数可以是以下任一参数:

对日期/时间列的引用。只有在这种情况下,才会应用上下文转换,因为列引用被替换为 可计算的(不同的()) 返回一列日期/时间值的表表达式。 定义日期/时间值的单列表的布尔表达式。 结果表仅包括dates列中存在的日期

内部SAMEPERIODLASTYEAR对应于以下DATEADD调用:

DATEADD ( <Dates>, -1, YEAR )
DATEADD(,-1,年)

要使用时间智能功能,应使用格式良好的日期表。可以使用各种技术创建一个;在这里可以找到一个简单的

也就是说,代码中的错误是在当前过滤器上下文中迭代表部分。您可能会看到更好的结果(但可能仍然不正确,因为缺少一个日期表,请使用
ALL('table')
,而不仅仅是
'table'
。这样,您就可以过滤整个表,而不仅仅是当前期间的部分

Total For Period Last Year =
CALCULATE(
    SUM( 'Table'[Amount] ),
    FILTER( ALL( 'Table' ), SAMEPERIODLASTYEAR( 'Table'[Period Date] ) )
)
我不确定,因为我从未使用过自动日期/时间,但如果启用了自动日期/时间(如果我正确地记得如何使用synstax),使用Power BI生成的日期表也可以做到这一点


在格式良好的日期表中使用时间智能函数