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

时间:2017-07-13 20:13:47

标签: powerbi dax

我有一个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,因为"比利"在选定的时间段内进行1次购买,第二次存储区将为2,并且它的值也为1,因为" Alison"在所选时间段内进行了2次购买。如果我将[购买数量]放在x轴上,然后使用

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

对于价值观,它告诉我有3个人有5次购买,但事实并非如此。实际上,在Purchases表上实际上没有人有5次购买。 Alison在购买3件时处于领先地位。

为了实现这一目标,我计划使用堆积柱形图,我只是不知道如何使用轴和值。 Axis只允许我使用静态列,这很好,但我可以让客户购买50个。

我认为答案是制定一个计算表格,但我之前从未这样做过,所以我不确定这是怎么回事。

1 个答案:

答案 0 :(得分:0)

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

为什么会得到这个结果?

当您将日期过滤器设置为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次购买)。比利也是如此。

你可以改变什么来完成你想要的东西?

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

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

CustomerCount = DISTINCTCOUNT(PurchasesPerMonth[CustomerID])