Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powerbi 创建桶的堆叠柱形图_Powerbi - Fatal编程技术网

Powerbi 创建桶的堆叠柱形图

Powerbi 创建桶的堆叠柱形图,powerbi,Powerbi,我目前在power bi中有一个条形图。该图在x轴上有不同的id,并且在y轴上收到的邮件量也不同。在我使用的表中,我有saleyear,id,还有一个Val列,每行的值都是1。id在表中显示多次,有时在同一年中显示两次以上 问题是我想要反转图形。我想根据人们收到的邮件数量来计算。然后使用切片器查看他们每年收到多少。我一直在努力寻找一个自己的解决方案,有没有人对如何解决这个问题有任何想法。 表l如下所示: id | salesYear | Val 10 |

我目前在
power bi
中有一个条形图。该图在
x轴上有不同的
id
,并且在
y轴上收到的邮件量也不同。在我使用的表中,我有
saleyear
id
,还有一个
Val
列,每行的值都是
1
id
在表中显示多次,有时在同一年中显示两次以上

问题是我想要反转
图形。我想根据人们收到的邮件数量来计算。然后使用
切片器查看他们每年收到多少。我一直在努力寻找一个自己的解决方案,有没有人对如何解决这个问题有任何想法。
表l如下所示:

    id    |     salesYear    | Val
    10    |         2012     |  1 
    11    |         2012     |  1 
    11    |         2013     |  1 
    10    |         2012     |  1 
    10    |         2013     |  1 
    12    |         2012     |  1 
    12    |         2012     |  1 
所以在可视化中,我想在x轴上显示,收到1封邮件的人=0,2封邮件=2,3封邮件=1。我的问题是如何实现这一点,这将是一个堆叠柱形图。如有任何建议,将不胜感激

15k |  Y axis would be amount of people who recieved 1 piece, 2 piece, etc..
14k |   _ 
13k |  | | 
12k | _| |
11k || | |
10k ||_|_|_________________________
      1  2  3  4  5  6  7  8  9    <-AmountOfMailRecieved
15k|Y轴将是收到1件、2件等物品的人数。。
14k|u
13k | | |
12k | ||
11k | | ||
10公里||_|_|_________________________

123456789您将在度量值或列中使用DISTINCTCOUNT

VariableName = DISTINCTCOUNT([AmountofMailReceived])
1)从Power BI中的示例数据开始

2)创建一个新的计算表,该表是与源表不同的年份列表

Years = DISTINCT(
    SELECTCOLUMNS(
        Mail,
        "SalesYear", Mail[salesYear]
    )
)

3)创建另一个计算表,用一系列整数交叉联接年份表。Power BI可能表示
[Value]
有错误(如下图中我的错误),但它工作正常

MailCounts = SELECTCOLUMNS(
    CROSSJOIN(Years, GENERATESERIES(1, 20)),
    "SalesYear", Years[SalesYear],
    "MailReceived", [Value]
)

4)添加一个计算列,计算源表中与年份和邮件计数匹配的ID数。例如,第一行计算2012年在源表中恰好显示一次的不同ID的数量;它是1,因为2012年只有ID 11出现一次

PersonCount = CALCULATE(
    DISTINCTCOUNT(Mail[id]),
    FILTER(Mail,
        Mail[salesYear] = EARLIER(MailCounts[SalesYear]) &&
        EARLIER(MailCounts[MailReceived]) = CALCULATE(
            COUNTROWS(Mail),
            FILTER(Mail, 
                Mail[salesYear] = EARLIER(Mail[salesYear]) && 
                Mail[id] = EARLIER(Mail[id])
            )
        )
    )
)

5)在源表和年份表之间创建关系,然后在年份表和计数表之间创建关系。这将允许根据源表的年份创建切片器,以过滤计数表中的结果

6)您可以选择在源表和计数表中隐藏年份字段。如果需要,在完成此操作后,创建下图中配置的图表

7)从年份表创建切片器,如下图所示


就这样。该图表应与您的预期结果相匹配,并可按年份进行筛选。

哇,非常感谢!我真的无法对你抽出时间回答我的问题表示感谢。这些步骤很容易遵循和理解。它就像一个符咒@卡坦-没问题;这是我的荣幸。