Calculate(SUM(..)..)vs SUMX

时间:2018-11-05 19:51:08

标签: powerbi dax m

我正在尝试基于p_region,状态码,日期范围和美元金额对金额列求和。*

当我尝试使用CALCULATE(SUM())时,无法获得所需的所有子句。

<TextBox x:Name="SearchBox"
         Grid.Row="0"
         style="{StaticResource SearchBox}" />

以上缺少日期范围子句。

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

当我尝试SUMX()时,我无法评估金额。

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

以上内容缺少金额条款。

£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] )

screenshot

我如何得到我想要的结果?

2 个答案:

答案 0 :(得分:1)

如果在过滤器功能中使用复杂条件,则每个条件应仅作用于一列。您可以使用CalculateTable函数。以下是一个示例:

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

答案 1 :(得分:1)

如果我的理解正确,您正在尝试将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]
)