2个DAX问题(根据同一个表和另一个表的条件,从一个表中添加行)

时间:2015-03-05 14:45:22

标签: dax

想象你有3个表:

Table Fact Seller  : seller_code,  seller_name,  manager_code
Table Fact Manager : manager_code, manager_name 
Table Fact Product : product_code, product_name, seller_code

密钥之间已建立了关系。

我想计算两个方面:

1)活跃卖家的数量。如果卖方在Fact Product中有任何(1个或更多)产品,则该卖方处于活动状态。

我想知道我怎么能算这个。它会是这样的  =CALCULATE(DISTINCTCOUNT('Fact Seller'[seller_code]);[filter here]))

[filter here]我需要类似FILTER(COUNTROWS('Fact Product';'Fact Product'[manager_code])>=1)之类的东西,只能从实际卖家那里获得至少有一件产品的卖家。我想我需要使用关键字VALUES(),但我找不到正确的语法。

我想知道这样做有什么更好的方法或模式。

2)有经理的卖家人数。请注意,在检索数据时,如果卖家没有经理,则字段manager_code的值为“-1”。所以我可以这样做:

=CALCULATE(DISTINCTCOUNT('Fact Seller'[seller_code]);FILTER('Fact Seller';'Fact Seller'[manager_code]>=1))

所以这是表格内的过滤器。这有效,但我想知道是否有更好的方法或模式。

你帮帮忙吗?

亲切的问候

1 个答案:

答案 0 :(得分:1)

对于第一个问题,您可以创建名为" Active"的calculated column。这将确定该行的卖家是否有效。

=IF(
  CALCULATE(
    COUNTROWS('Fact Product'),
    ALL('Fact Product'),
    'Fact Product'[seller_code]=EARLIER('Fact Seller'[seller_code])
  )<1,FALSE(),TRUE()
 )

现在,您可以创建一个使用此新列获取总活跃卖家的指标

ActiveSellers:=CALCULATE(
 DISTINCTCOUNT('Fact Seller'[seller_code]),
 'Fact Seller'[Active]=TRUE()
)

对于第二个问题,您的陈述可以缩短为

SellersWithManagers:=CALCULATE(
 DISTINCTCOUNT('Fact Seller'[seller_code]),
 'Fact Seller'[manager_code]<>-1
)