繁体   English   中英

使用 DAX Power BI 移动年度总计

[英]Moving Annual Total with DAX Power BI

我正在尝试使用 DAX 计算 MAT(移动年度总计),但无法完全实现我想要的。 我有如下数据。

在此处输入图像描述


我正在尝试计算每 12 个月的治疗总数,例如“1 月 21 日 - 12 月 21 日”,其“日期”从 2020/1/1 到 2020/12/1。 即“A”在该期间出现了 4 次,因此结果将如下所示。

在此处输入图像描述

然后我想在最近的 12 个月内继续这样做,最后将其可视化如下。 在此处输入图像描述


我读过我应该在 DAX 中使用 CALCULATE 和 DATESPERIOD,但不能准确计算。 以下代码是我尝试过但失败的代码。

Moving Annual Total = CALCULATE(
COUNTA('2017-2022Q1'[idnum]),
DATESINPERIOD('2017-2022Q1'[mat].[Date], LASTDATE('2017-2022Q1'[mat].[Date]), 12, MONTH))

有人可以给我一个建议来实现这一点吗? 谢谢。

*这是示例文件。 https://drive.google.com/file/d/1gDNeBe5KiKBqx3cZ7G0SMiSQ23w96NF4/view?usp=sharing

在您的 dax 度量中,我建议您首先创建一个日期表并与事实表创建一对多关系(您的表:'2017-2022Q1'); 然后在您的计算度量中过滤日期表,而不是像您在此处所做的那样直接过滤事实表('2017-2022Q1')。 您应该遵循最佳实践。

        For Example: How to create a date table using dax:
        Date =
        VAR MinYear = YEAR ( MIN ( '2017-2022Q1'[date] ) )
        VAR MaxYear = YEAR ( MAX ( '2017-2022Q1'[date] ) )
        RETURN
        ADDCOLUMNS (
            FILTER (
                CALENDARAUTO( ),
                AND ( YEAR ( [Date] ) >= MinYear, YEAR ( [Date] ) <= MaxYear )
            ),
            "Calendar Year", "CY " & YEAR ( [Date] ),
            "Month Name", FORMAT ( [Date], "mmmm" ),
            "Month Number", MONTH ( [Date] )
        )
    

你的最终代码可能是这样的:

        Moving Annual Total = CALCULATE(
        COUNTA('2017-2022Q1'[idnum]),
        DATESINPERIOD('Date'[Date], LASTDATE('Date'[Date]), -12, MONTH)
        
        )

如果您使用 lastdate() 函数定义开始日期,则它将返回过滤器上下文中的最后日期。 您还应该将间隔指定为 (-12) 个月以提取 1 年内的所有日期。

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM