Вычислить (SUM (..) ..) против SUMX - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь суммировать столбец суммы на основе p_region, кода состояния, диапазона дат и суммы в долларах. *

Когда я пытаюсь использовать CALCULATE (SUM ()), я не могу получить все нужные мне пункты.

<£50k =
CALCULATE (
    SUM ( tsg_enquiries[tsg_quoteprice_base] ),
    tsg_enquiries[statuscode] = 866120000
        || tsg_enquiries[statuscode] = 866120007,
    tsg_enquiries[tsg_quoteprice_base] <= 49999
)

В приведенном выше тексте отсутствует пункт диапазона дат.

tsg_enquiries[createdon] >=  'LTM Live'[xxxBegin] &&`  
tsg_enquiries[createdon]  <= 'LTM Live'[xxxEnd]`

Когда я пытаюсь использовать SUMX (), я не могу оценить сумму.

£ALL =
SUMX (
    FILTER (
        tsg_enquiries,
        tsg_enquiries[pc_regionno] = 'LTM Live'[pc_regionno]
            && tsg_enquiries[statuscode] = 866120000
            || tsg_enquiries[statuscode] = 866120007
            && tsg_enquiries[statuscode] = 'LTM Live'[pc_regionno]
            && tsg_enquiries[createdon] >= 'LTM Live'[xxxBegin]
            && tsg_enquiries[createdon] <= 'LTM Live'[xxxEnd]
    ),
    tsg_enquiries[tsg_quoteprice_base]
)

Выше отсутствует пункт суммы.

tsg_enquiries[tsg_quoteprice_base]<=49999

screenshot

Как я могу получить желаемый результат?

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Если я правильно понимаю, вы пытаетесь добавить tsg_enquiries[tsg_quoteprice_base]<=49999 к критериям во втором запросе (который использует SUMX)? Вы можете использовать функцию AND, с начальным набором фильтров в качестве первого аргумента и tsg_enquiries[tsg_quoteprice_base]<=49999 в качестве второго. Хотя в этом нет необходимости, вы также можете рассмотреть возможность замены && и || для удобства чтения.

£ALL =
SUMX (
    FILTER (
        tsg_enquiries,
        AND (
            tsg_enquiries[pc_regionno] = 'LTM Live'[pc_regionno]
                && tsg_enquiries[statuscode] = 866120000
                || tsg_enquiries[statuscode] = 866120007
                && tsg_enquiries[statuscode] = 'LTM Live'[pc_regionno]
                && tsg_enquiries[createdon] >= 'LTM Live'[xxxBegin]
                && tsg_enquiries[createdon] <= 'LTM Live'[xxxEnd],
            tsg_enquiries[tsg_quoteprice_base] <= 49999
        )
    ),
    tsg_enquiries[tsg_quoteprice_base]
)
0 голосов
/ 06 ноября 2018

Если вы используете сложные условия в функции фильтра, каждое условие должно действовать только на один столбец. Вы можете использовать функцию CalculateTable, может быть. Ниже приведен пример:

SUMX( CALCULATETABLE('InternetSales_USD', 'DateTime'[CalendarYear]=2002)
 , [SalesAmount_USD])
...