Сумма MAX значений столбца - PullRequest
0 голосов
/ 09 июля 2019

Ситуация :

У меня есть столбец (возврат), который принимает значение МАКС для каждого дня, чтобы я не дублировал возврат.

refund =
var calcul = 
        CALCULATE(
            SUM(Query1[amount]),
            USERELATIONSHIP(Query1[created_at], DateTable[Date]),
            Query1[kind] = "refund",
            Query1[status] = "success"       
            )

Это работает для каждого дня, но сумма является максимальной для этого столбца

Цель :

Мне нужна эта мера для расчета чистых продаж.У меня уже есть показатель валовых продаж, но моя формула возврата не работает при агрегировании.

Что я попробовал (спасибо Алексис Олсон):

refund =
var calcul = 
        CALCULATE(
            SUM(Query1[amount]),
            USERELATIONSHIP(Query1[created_at], DateTable[Date]),
            Query1[kind] = "refund",
            Query1[status] = "success"       
            )
    return 
        SUMX(DISTINCT(Query1[orderId]), calcul)

Однаковывод неожиданный.Он в основном берет каждое значение и умножает его на различное количество идентификаторов заказа в этот день (возврат или нет) .

Поэтому я попытался разделить его на различное количество идентификатора заказа, новозникает та же проблема со всей строкой, принимающей максимальное значение.

Вот вывод, который я получаю, используя приведенное ниже решение:

Returns column is correct but total isn't. Refund column is not showing all the values (date relationship issue) but the total works

Отношения:

Query1 [create_at] DateTable [Date] (неактивный)

Query1 [orderDate] DateTable [Date] (активный)

Мера моего возврата:

Returns = 
CALCULATE(
    MAX(Query1[amount]),
    USERELATIONSHIP(Query1[created_at], DateTable[Date]),
    Query1[kind] = "refund",
    Query1[status] = "success"       
    )

Ответы [ 2 ]

0 голосов
/ 11 июля 2019

Одним из способов решения моей проблемы было использование CALCULATETABLE перед суммированием, а затем использование SUMX, как предложено выше Алексисом.

Returns = 
VAR sumary = 
    CALCULATETABLE(
        SUMMARIZE(
            Query1,
            Query1[orderId],
            "maxValue",CALCULATE(
                MAX(Query1[amount]),
                Query1[kind]= "refund",
                Query1[status] = "success"
            )
        ),USERELATIONSHIP(Query1[trx_date],DateTable[Date]))
    RETURN
        SUMX(sumary,[maxValue])
0 голосов
/ 10 июля 2019

Вы довольно близки к тому, что работает. Попробуйте заменить calcul на сводную таблицу вместо скаляра с одним значением, например:

refund =
VAR Summary =
    SUMMARIZE (
        Query1,
        Query1[orderId],
        "MaxValue", CALCULATE (
            MAX ( Query1[amount] ),
            USERELATIONSHIP ( Query1[created_at], DateTable[Date] ),
            Query1[kind] = "refund",
            Query1[status] = "success"
        )
    )
RETURN
    SUMX ( Summary, [MaxValue] )
...