powerpivot功能类似于" NOT IN"的SQL

时间:2016-02-01 06:50:21

标签: powerpivot dax

我们说有三张桌子。 DimItem,DimCustomer和FactSale。 我如何才能找到不购买特定商品的顾客? 它看起来像不在' of sql。

1 个答案:

答案 0 :(得分:1)

假设数据透视表或类似工具作为报告机制:

CustomersNotPurchasing:=
IF(
    ISEMPTY( FactSale )
    ,"No Purchase of selected item(s): " 
        & CONCATENATEX(
            VALUES( DimProduct[Product] )
            ,DimProduct[Product]
            ,"; "
        )
)

此度量将返回一个字符串,该字符串包含以下内容:“No Purchase of selected items(s):”与所选产品的分号分隔列表连接,仅适用于未购买任何所选产品的客户。对于那些购买任何产品的客户,它会返回空白,因此会从枢轴或类似的报告工具中省略。

FactSale [CustomerKey],DimCustomer [CustomerKey]和FactSale [ProductKey],DimProduct [ProductKey]之间的关系为N:1。

此度量假设来自DimCustomer的数据透视表行/列标签,以及来自DimProduct的切片器/过滤器选择。逻辑将与FactSale表上的任何其他过滤器一起使用。例如。如果您过滤到特定月份,则只会为那些未在所选月份购买任何所选产品的客户看到结果。

ISEMPTY()检查表是否有0行(如果为0则为True,如果为> 0则为False)。由于这是数据透视表中的度量,因此FactSale在过滤器上下文中进行评估,即仅过滤到数据行上的客户和产品切片器中选择的项目。

True的IF()结果是字符串文字,以及在DimProduct [Product]中选择的所有值的串联。

我们的IF()的else结果被省略,这意味着度量返回空白是ISEMPTY()返回false。

Demo workbook.