堆积柱形图,用于创建存储桶

时间:2017-09-27 14:13:45

标签: powerbi

我目前在power-bi中有一个条形图。该图表id's上的x axisy axis上收到的邮件数量不同SalesYear。在我使用的表格中,我有idVal1列,每列的值为idgraph reversed在表格中多次出现,有时在同一年出现两次以上。

问题是我想要slicer。我想根据他们收到多少邮件来打人。然后使用 id | salesYear | Val 10 | 2012 | 1 11 | 2012 | 1 11 | 2013 | 1 10 | 2012 | 1 10 | 2013 | 1 12 | 2012 | 1 12 | 2012 | 1 查看他们每年收到的金额。我一直在努力寻找自己的解决方案,任何人都对如何处理这个问题有任何想法。 表l看起来像这样:

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

所以在可视化中我想表明,在X轴上,收到1件邮件的人= 0件,2件邮件= 2件,3件邮件= 1.我的问题是我怎样才能实现这一点将是一个Stacked Column图表。任何建议将不胜感激!

SqlDataTable dt = new SqlDataTable();
SqlCommand comm = new SqlCommand(query, conn);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = comm;
da.Fill(dt);
myCMB.DataSource = dt;
myCMB.DisplayMember = "display";
myCMB.ValueMember = "value;

2 个答案:

答案 0 :(得分:1)

1)从Power BI中的示例数据开始。

Sample Data

2)创建一个新的计算表,它是源表中不同的年份列表。

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

Year Table

3)创建另一个计算表,该表使用一系列整数交叉连接年表。 Power BI可能表示[Value]有错误(就像下图中的情况一样),但它可以正常工作。

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

Count Table

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])
            )
        )
    )
)

Person Count

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

Relationships

6)您可以选择隐藏源表和计数表中的年份字段。如果您愿意,可以按照下图中的配置创建图表

Chart

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

Slicer

就是这样。该图表应与您的预期结果相符,并可按年度过滤。

答案 1 :(得分:0)

您将在度量或列中使用DISTINCTCOUNT。

VariableName = DISTINCTCOUNT([AmountofMailReceived])