Что такое правильный синтаксис DAX GROUPBY в вычисляемом столбце в Power Pivot в Excel в Office 365 - PullRequest
0 голосов
/ 10 декабря 2018

Следующий синтаксис, введенный в формулу вычисляемого столбца для таблицы «Посещения», представленной ниже в PowerPivot в Excel (версия Office 365):

=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.

Чтоявляется правильным синтаксисом DAX GROUPBY при использовании PowerPivot, встроенного в Excel, для добавления вычисляемого столбца «First_Visit_Date» к простой исходной таблице. Таблица посещений, изображенная ниже, для достижения таблицы назначения, также перечисленной ниже:

Исходная таблица (посещения):

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

1 Ответ

0 голосов
/ 10 декабря 2018

Ваш синтаксис выглядит нормально, но вы можете не понимать, что GROUPBY выводит таблицу, а не скалярное значение.

Это то, что возвращает ваш DAX, если вы вводите его как новую таблицу, а невычисляемый столбец:

Output

Для вычисляемого столбца вам просто нужна формула 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]
)
...