首页 > 解决方案 > 获取最近 2 个月内没有销售的客户 (ID) 的数量和列表

问题描述

所以,我有2张桌子如下

销售表:

+----+------------+
| ID | SALE_DATE  |
+----+------------+
|  1 | 09-21-2021 |
|  2 | 09-21-2021 |
|  3 | 09-21-2021 |
|  2 | 09-21-2021 |
|  3 | 09-21-2021 |
|  1 | 09-21-2021 |
|  5 | 07-22-2021 |
|  6 | 09-21-2021 |
|  9 | 09-21-2021 |
|  7 | 08-21-2021 |
|  8 | 05-21-2021 |
+----+------------+

客户表

+----+
| ID |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
|  6 |
|  7 |
|  8 |
|  9 |
| 10 |
+----+

我想创建 2 个措施:

1st 将是过去 2 个月内没有销售的客户数,因此在本例中为 2(8 和 10)

第二个措施将给出所有这些客户 ID(8 和 10)的列表

现在,我使用此度量来获取过去 2 个月内没有销售的所有 ID 的列表

show_hide = 

VAR current_name = MIN(SALES[ID])


VAR chk_not_in = 
IF(
    COUNTROWS(
        FILTER(
            ALL(SALES),
             SALES[ID]= current_name && SALES[SALE_DATE])>  DATE(YEAR(NOW()),MONTH(NOW())-2, DAY(NOW()))
        )
    )= 0,
    0,
    1
)

VAR chk_in = 
IF(
    COUNTROWS(
        FILTER(
            ALL(CUSTOMER),
            CUSTOMER[ID] = current_name
        )
    ) = 0,
    0,
    1
)


RETURN IF(chk_in = 1 && chk_not_in = 1, 1, 0)

因此,show_hide 为“0”的每个 ID 都将是过去 2 个月内没有任何销售额的 ID,我想知道是否有简单的方法可以做到这一点,而且,我不知道如何计算所有的那些身份证

标签: powerbidaxpowerquery

解决方案


首先 - 我假设您的测试数据是 2020 年而不是 2021 年,并且 SALES 表中的 ID 是 CUSTOMER ID。

我会将其作为衡量标准和计算列来解决。

该措施将计算过去两个月内未售出的客户。从您的数据来看,我认为您缺少 (4) 个没有售出任何东西的客户 - 使客户总数达到三个 (4, 8, 10)。

CustomersWithNoSalesIn2Months = 

// Work out what date was 2 months ago
VAR twoMonthsAgo = DATE(YEAR(NOW()),MONTH(NOW())-2, DAY(NOW()))

// Count the total distinct customers in the customer table
VAR totalCustomers = CALCULATE(DISTINCTCOUNT(Customer[ID]))

// Count how many distinct customers did have sales in the past 2 months
VAR customersWithSalesInTheLast2Months = CALCULATE(DISTINCTCOUNT(Sales[ID]), Sales[SALE_DATE] > twoMonthsAgo)

// Subtract the customers who did have sales from the total to get the number of customers that did not have sales
RETURN totalCustomers - customersWithSalesInTheLast2Months

计算的列将放置在 CUSTOMER 表中,并将计算过去 2 个月内有多少销售客户。

SalesMadeInTheLast2Months = 
VAR MostRecentSale = CALCULATE(MAX(Sales[SALE_DATE]), FILTER(Sales, Customer[ID] = Sales[ID]))
VAR TwoMonthsAgo = DATE(YEAR(NOW()),MONTH(NOW())-2, DAY(NOW()))
RETURN CALCULATE(COUNTROWS(Sales), FILTER(Sales, Sales[SALE_DATE] > TwoMonthsAgo), FILTER(Sales, Sales[ID] = Customer[ID]))

现在,您可以在客户表中过滤BLANK销售额或在您需要的任何其他计算中使用计数。例如,客户 1,2 和 3 在过去 2 个月内的销售额最高。

在此处输入图像描述


推荐阅读