首页 文章

Power BI / DAX - 具有动态计数的堆积柱形图

提问于
浏览
1

我有一个Customers表,如下所示:

Customers

Name         ID           Number of Purchases
Billy        100          2
Steve        101          1
Alison       102          5
John         103          3
Matt         104          0
Andrew       105          1

我有一个标准的日期维度

Date          Month        Year
 1/1/2017      January      2017
 1/2/2017      January      2017
 1/3/2017      January      2017
 1/4/2017      January      2017
 ...
 2/1/2017      February     2017
 2/2/2017      February     2017
 2/3/2017      February     2017
 2/4/2017      February     2017

我有一个购买表

Purchases

 Date         Name      ID       Amount
 1/1/2017     Billy     100      10.53
 1/1/2017     Alison    102      15.90
 1/2/2017     Alison    102      9.87
 1/3/2017     Steve     101      12.59
 1/4/2017     Billy     100      22.19
 1/4/2017     John      103      17.45
 1/5/2017     John      103      8.79
 2/1/2017     Alison    102      9.87

我正在尝试开发一些东西,根据他们在所选日期范围内购买的数量,每个顾客都被扔进垃圾箱 .

因此,如果我选择1/1/2017 - 2017年1月1日,我应该只有2个酒吧 . 第一个条形在x轴上的值应为1,值为1,因为“Billy”在选定的时间段内进行了1次购买,第二个bin将为2,并且它的值也为1,因为“Alison”在所选时间段内进行了2次购买 . 如果我将[购买数量]放在x轴上然后使用

NameCount = CALCULATE( COUNT(Purchases[ID]), FILTER(Purchases, Purchases[ID] = RELATED(Customer[ID])))

对于 Value 观,它告诉我有3个人有5次购买,但事实并非如此 . 实际上,在Purchases表上实际上没有人有5次购买 . Alison以3次购买为主导 .

为了实现这一点,我计划使用堆积柱形图,我只是不知道用于Axis和Values的内容 . Axis只允许我使用静态列,这很好,但我可以让客户购买50个 .

我认为答案将是开发一个计算表,但我之前从未这样做过,所以我不确定如何这样做 .

1 回答

  • 0

    有一些事情需要改变才能实现你想要的 . 我将尝试解释您的场景中发生的事情,然后为您可能更改的内容提供一些输入 .

    Why do you get this result?

    当您将日期过滤器设置为2017年1月1日至2017年1月1日时,您将在范围内保留以下购买(包括过滤器中的所选日期):

    Date         Name      ID       Amount
    1/1/2017     Billy     100      10.53
    1/1/2017     Alison    102      15.90
    1/2/2017     Alison    102      9.87
    2/1/2017     Alison    102      9.87
    

    当您在X轴上设置客户[购买]的条形图时,以及您的度量

    NameCount = CALCULATE( COUNT(Purchases[ID]), FILTER(Purchases, Purchases[ID] = RELATED(Customer[ID])))
    

    在Y轴上,您实际上从Purchases表中计算[ID]的数量,并在Customer表中显示相关的[Purchases]值 .

    根据您的客户表,Alison有5次购买,Billy有2次购买 . 这些是静态值,并且不会受到日期过滤器的任何影响 .

    COUNT()函数不返回不同数量的[ID](您可以使用DISTINCTCOUNT()函数来实现此目的) . 因此,您将在Y轴上看到值3(Alison在所选日期的“购买”表中显示三次),X轴上的值为5(Alison根据您的“客户”表格进行了5次购买) . 比利也是如此 .

    What can you change to accomplish what you want?

    你想要完成的是不容易实现的 . 您希望在一个轴上使用动态度量(在选定时间段内每个客户的购买数量),在另一个轴上使用另一个动态度量(所选时间段内的不同客户数量) . 这在PowerBI中无法完成 . 这里的问题是动态日期过滤器,它阻止您预先计算购买数量作为计算列 .

    一种解决方案可以是创建一个新表,其中包含每个客户每月的购买数量 . 然后,您可以仅在一个月内使用过滤器,并在X轴上显示该月的每个客户的购买数量 . 这是可能的,因为购买的数量是预先计算的数量(列,而不是度量) . 在Y轴上,你可以使用这样的度量:

    CustomerCount = DISTINCTCOUNT(PurchasesPerMonth[CustomerID])
    

相关问题