Power Bi - 基于 SelectedValue 期间的前一年期间的总计
Posted
技术标签:
【中文标题】Power Bi - 基于 SelectedValue 期间的前一年期间的总计【英文标题】:Power Bi - Total for Period Year Prior Based On SelectedValue Period 【发布时间】:2021-01-01 15:44:41 【问题描述】:问题:
计算切片器中所选期间的上一年期间的总计。表格包含金额、期间和日期,即 2020 年 11 月 11 日的 2020 年 11 月 1 日,基于期间。
尝试过:
所选的切片器周期为 10/2020 和 11/2020。 表视觉对象包含期间和金额列。数据模型表包含列、帐户、金额、期间和期间日期。每个期间的多个帐户将具有相同的期间日期,以便对期间进行排序。例如,账户 1 到 3 都将 2020 年 11 月 1 日作为 2020 年 11 月的期间日期。为计算去年金额而创建的Calculated Measure 如下:
去年期间总计 = 计算( Sum(‘表’[金额]) , 筛选( '桌子' ,SAMEPERIODLASTYEAR(‘表’[期间日期]) ) )
结果:
计算的度量已添加到表中,但仅显示切片器中选择的期间的金额,而不是同一期间的期间,而是上一年的期间。 因此,2020 年 10 月的金额为 2000 美元,计算应显示 2019 年 10 月的金额,即 1500 美元。
期间 |金额 |去年同期合计
2020 年 11 月 2000 美元 2000 美元
10/202。 $1500 $1500
期望的结果:
期间 |金额 |去年同期合计
2020 年 11 月 2000 美元 1500 美元
2020 年 10 月 1500 美元 1000 美元
【问题讨论】:
【参考方案1】:要使用时间智能函数,应使用格式良好的日期表。可以使用各种技术创建一个;一个简单的可以在这里找到
DAX 101: Creating a simple date table in DAX
也就是说,您的代码中的错误是您在当前过滤器上下文中迭代 Table 部分。您可能会看到更好的结果(但可能仍然不正确,因为缺少日期表,使用 ALL( 'Table' )
而不仅仅是 'Table'
。这样您将过滤整个表,而不仅仅是当前期间的部分。
Total For Period Last Year =
CALCULATE(
SUM( 'Table'[Amount] ),
FILTER( ALL( 'Table' ), SAMEPERIODLASTYEAR( 'Table'[Period Date] ) )
)
我不确定,因为我从不使用自动日期/时间,但这也可以通过在启用自动日期/时间时使用 Power BI 生成的日期表来工作(如果我正确记住了有关如何使用的语法它)
Total For Period Last Year =
CALCULATE(
SUM( 'Table'[Amount] ),
FILTER( ALL( 'Table' ), SAMEPERIODLASTYEAR( 'Table'[Period Date].[Date] ) )
)
【讨论】:
【参考方案2】:要使用像sameperiodlastyear 这样的时间智能,您必须使用日期表(标记为日期表)。阅读此说明:
https://dax.guide/sameperiodlastyear/#
为了使用任何时间智能计算,您需要一个格式良好的日期表。 Date 表必须满足以下要求:
所需年份的所有日期都必须存在。日期表必须始终从 1 月 1 日开始,到 12 月 31 日结束,包括此范围内的所有日期。如果报告仅引用会计年度,则日期表必须包括从会计年度的第一天到最后一天的所有日期。例如,如果 2008 财政年度从 2007 年 7 月 1 日开始,则日期表必须包含从 2007 年 7 月 1 日到 2008 年 6 月 30 日的所有日期。 需要有一列具有包含唯一值的 DateTime 或 Date 数据类型。此列通常称为日期。尽管 Date 列经常用于定义与其他表的关系,但这不是必需的。尽管如此,日期列必须包含唯一值,并且应该由标记为日期表功能引用。如果该列还包含时间部分,则不应使用时间 - 例如,时间应始终为 12:00 am。 日期表必须在模型中标记为日期表,以防日期表与任何其他表之间的关系不是基于日期的。 评论 日期参数可以是以下任何一种:
对日期/时间列的引用。只有在这种情况下才会应用上下文转换,因为列引用被替换为 可计算的(不同的()) 返回单列日期/时间值的表表达式。 定义日期/时间值的单列表的布尔表达式。 结果表仅包含日期列中存在的日期。
在内部 SAMEPERIODLASTYEAR 对应于 DATEADD 的以下调用:
DATEADD ( <Dates>, -1, YEAR )
【讨论】:
以上是关于Power Bi - 基于 SelectedValue 期间的前一年期间的总计的主要内容,如果未能解决你的问题,请参考以下文章
Power Bi - 基于 SelectedValue 期间的前一年期间的总计
《奥威Power-BI基于MySQL数据源制作报表》腾讯课程开课啦
Pyramid Analytics宣布无缝集成BI Office和微软Power BI Desktop