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