【问题标题】:DAX: Average distinct values per dayDAX:每天的平均不同值
【发布时间】:2019-03-16 05:31:41
【问题描述】:

我有一些类别分布在几天内。同一类别可以在同一日期出现多次。如何获得每天不同类别的平均数量?

数据集:

Date,Category
11.10.2018,A
11.10.2018,B
11.10.2018,C
12.10.2018,A
12.10.2018,A
12.10.2018,A
13.10.2018,B
13.10.2018,B

数据视图中的表格:

表格可视化:

我的尝试:

我可以使用 dist = CALCULATE(DISTINCTCOUNT(Table1[Category]);DISTINCT(Table1[Date])) 每天获得不同的值作为衡量标准

所以我想最终得到的是上表中dist 的平均值,即1.67。但是,你是怎么做的?我尝试了AVERAGEAVAREGEXVALUESCALCULATE 的不同组合,但没有运气。而且我尝试得越多,我就越让自己相信 DAX 是无用的(尽管我内心深处知道它不可能)。感谢您的任何建议!

【问题讨论】:

    标签: powerbi dax


    【解决方案1】:

    使用SUMMARIZE 计算每个日期的不同计数,然后您可以使用AVERAGEX 迭代每个日期值:

    dist:= 
    IF ( 
        HASONEFILTER ( Table1[Date] ), 
        DISTINCTCOUNT ( Table1[Category] ), 
        AVERAGEX ( 
            SUMMARIZE ( 
                Table1, 
                Table1[Date],
                "Daily Average", DISTINCTCOUNT ( Table1[Category] )
            ),
            [Daily Average]
        )
    )
    

    编辑:您实际上并不需要 IF 函数 - 使用它似乎也可以执行:

    dist:= 
    AVERAGEX ( 
        SUMMARIZE ( 
            Table1, 
            Table1[Date],
            "Daily Average", DISTINCTCOUNT ( Table1[Category] )
        ),
        [Daily Average]
    )
    

    【讨论】:

    • 谢谢!奇迹般有效!这就是为什么 DAX 让我有点害怕的原因。一个看似简单的任务很快就会变成一堆嵌套函数。你碰巧知道去哪里看如果我试着让它不那么……复杂一点?我认为CALCULATE(我的一些同事一直使用)是可行的方法,但在这种情况下我不这么认为。
    • 其实没那么复杂!与嵌套 DAX 一样,从内到外阅读。您需要在评估上下文中为每个日期执行不同计数,因此我们要做的第一件事是使用SUMMARIZE 创建日期/不同计数的汇总表(您的第一个“表格可视化”图像的虚拟版本。然后我们使用AVERAGEX (iterator) 函数来计算这个虚拟表中所有日期的不同计数的平均值。最后,IF 语句只是在那里执行简单的DISTINCTCOUNT 时仅评估一个日期。
    • 感谢您的详细信息!最后一个问题,如果你不介意的话。您是在 Power BI 中还是在其他编辑器中编写表达式?也许是 DAXEditor?达克斯工作室?我正在寻找一种方法,您可以更轻松地更轻松地显示计算中的每个步骤。如果这是可能的......
    • 我通常只使用Notepad++,并且有良好的缩进/换行纪律!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多