筛选表上DISTINCTCOUNT的计算量度

时间:2018-10-16 20:39:31

标签: powerbi dax

我需要创建一个计算得出的不同列计数的度量,该度量来自两个表,每个表都应用了过滤器。表格之间相互关联,并且与日期维度(一个处于活动状态,另一个处于非活动状态)

我整理了一个工作样本,并使用了我已经在使用的度量,并显示了所需的状态度量。

我在每个表上使用SUMMARIZECOLUMNS创建了一个计算的度量(使用TREATAS进行过滤,然后对它们进行了UNION,但它没有保留日期的过滤上下文。

请寻找一些DAX帮助!

Link to Unit Test

Image of the Tables & Relationships


当前措施:

Valid Touch Point Contact =
CALCULATE(
    COUNTROWS(OrderContact),
    OrderContact[Direction]="Inbound",
    OrderHeader[Region]<>"IE"
)

Valid Touch Point Header =
CALCULATE(
    DISTINCTCOUNT(OrderHeader[Order Number]),
    USERELATIONSHIP(OrderHeader[Created Date], 'Date'[Date]),
    OrderHeader[Type]="Web",
    OrderHeader[Region]<>"IE"
)

1 个答案:

答案 0 :(得分:0)

我用下面的DAX解决了这个问题。最初,我曾尝试使用SUMMARIZECOLUMNS来使两者之间具有UNION,但是通过替换为CALCULATETABLE,我能够达到预期的结果。

从逻辑上讲,我通过添加上面列出的两个度量来求和,并简单地删除了两个具有相交的COUNTROWS。

相交度量:

  Touch Point Intersect = CALCULATE(
  COUNTROWS(
  INTERSECT(
     CALCULATETABLE(VALUES('OrderHeader'[OrderNumber]),
        FILTER('OrderHeader',OrderHeader[Type]="Web",OrderHeader[Region]<>"IE"),
        USERELATIONSHIP('OrderHeader'[Created Date],'Date'[Date])),
     CALCULATETABLE(VALUES(Emails[OrderNumber]),
        FILTER('OrderHeader',OrderContact[Direction]="Inbound",OrderHeader[Region]<>"IE"),
        FILTER('Emails',OrderContact[Direction]="Inbound")
     )
  )))

因此,我需要的措施是:

    Valid Touch Point Contact+ Valid Touch Point Header - Touch Point Intersect