首页 > 解决方案 > Office 365 Excel 中 Power Pivot 计算列中正确的 DAX GROUPBY 语法是什么

问题描述

以下语法输入到 Excel(Office 365 版本)中 powerpivot 中下面提供的表访问的计算列公式中:

=GROUPBY(  
   Visits,  
   [Patient Name],  
   "First_Visit_Date", 
   MINX(CURRENTGROUP(), Visits[Visit_Date])
 )

产生错误:

The expression refers to multiple columns. Multiple columns cannot be 
converted to a scalar value.

使用 Excel 中嵌入的 PowerPivot 将计算列“First_Visit_Date”添加到下面描述的简单源表访问表以到达下面还列出的目标表时,正确的 DAX GROUPBY 语法是什么:

源表(访问):

Patient_Name, Visit_Date, Duration  
Sue,           8/10/2017,       60  
Sue,           8/12/2017,       20  
Sue,           8/20/2017,       15
Bill,          9/ 1/2018,       90  
Bill,         10/ 1/2018,       90  
Sally,         5/22/2016,       30  
Sally,         5/30/2016,       30

目标表:

Patient_Name, Visit_Date, Duration, Calculated Column 1 
Sue,          8/10/2017,  60,       8/10/2017    
Sue,          8/12/2017,  20,       8/10/2017  
Sue,          8/20/2017,  15,       8/10/2017
Bill,         9/ 1/2018,  90,       9/ 1/2018
Bill,        10/ 1/2018,  90,       9/ 1/2018
Sally,        5/22/2016,  30,       5/22/2016 
Sally,        5/30/2016,  30,       5/22/2016

标签: exceloffice365daxpowerpivot

解决方案


您的语法看起来不错,但您可能没有意识到GROUPBY输出的是一个表,而不是一个标量值。

如果您将其作为新表而不是计算列输入,这就是您的 DAX 返回的内容:

输出

对于计算列,您只需要这样的 DAX 公式:

CalcCol =
CALCULATE(
    MIN(Visits[Visit_Date]),
    ALLEXCEPT(Visits, Visits[Patient_Name])
)

或像这样:

CalcCol =
MINX(
    FILTER(
        Visits,
        Visits[Patient_Name] = EARLIER(Visits[Patient_Name])
    ),
    Visits[Visit_Date]
)

推荐阅读