基于切片器的动态存储桶

时间:2018-09-04 09:22:58

标签: powerbi

我有这张桌子

usr box app device  bucket      bucket_box  bucket_app  bucket_box_app  month
u1  b1  a1  d1      > 3         3 devices   2 devices   2 devices       201809
u1  b1  a1  d2      > 3         3 devices   2 devices   2 devices       201809
u1  b1  a2  d3      > 3         3 devices   2 devices   1 device        201809
u1  b2  a2  d4      > 3         1 device    2 devices   1 device        201809
u2  b1  a1  d5      > 3         1 device    2 devices   1 device        201809
u2  b2  a3  d6      > 3         2 devices   1 device    1 device        201809
u2  b2  a4  d7      > 3         2 devices   1 device    1 device        201809
u2  b3  a1  d8      > 3         1 device    2 devices   1 device        201809
u3  b3  a1  d9      3 devices   2 devices   2 devices   1 device        201809
u3  b4  a1  d10     3 devices   1 device    1 device    1 device        201809
u3  b3  a2  d11     3 devices   2 devices   2 devices   1 device        201809

我在 box app 列上创建了2个切片器。 在群集柱形图中,在值上我有不同的usr。 传说中,我想按设备计算usr的故障。存储桶是1个设备,2个设备,3个设备,超过3个设备。

如果切片器中没有选择内容:

  • 计算不同的usr = 3
  • 2个usr->超过3个设备
  • 1个usr-> 3个设备

如果b1用作过滤器:

  • 计算不同的usr = 2
  • 1个usr-> 3个设备
  • 1个usr-> 1个设备

如果将a1用作过滤器:

  • 计算不同的usr = 3
  • 3个usr-> 2个设备

如果a1和b1用作过滤器:

  • 计算不同的usr = 2
  • 1个usr-> 2个设备
  • 1个usr-> 1个设备

我该怎么做?

最新编辑

我已经稍微修改了源表,使其完全符合我现在的状态。 您可以从here下载报告 我想要一个动态计数组。每次过滤切片器时,都应该有一个由usr组成的count(device)组,然后基于此计数创建存储桶:当前过滤器上有多少用户拥有1个设备,2个设备,3个设备或3个以上的设备。在轴上,我放置了month列,但是对于本示例而言,它无关紧要,因为它只有一个值。

2 个答案:

答案 0 :(得分:1)

如上所述,这个问题实质上是以下问题的重复: DAX grouping by a measure result

您需要为类别创建一个新表Buckets

Bucket
------
1 device
2 devices
3 devices
>3 devices

一旦有了它,将其放在“图例”框中,并对“值”框使用以下度量:

DynamicBucketingMeasure =
    VAR Summary =
        SUMMARIZE (
            ALLSELECTED ( pbi_box_active_devices_4 ),
            pbi_box_active_devices_4[usr],
            "Devices", DISTINCTCOUNT ( pbi_box_active_devices_4[device] )
        )
    VAR Bucketed =
        ADDCOLUMNS (
            Summary,
            "Bucket", SWITCH (
                TRUE (),
                [Devices] > 3, ">3 devices",
                [Devices] = 1, "1 device",
                [Devices] & " devices"
            )
        )
    RETURN
        SUMX ( Bucketed, IF ( [Bucket] = SELECTEDVALUE ( Buckets[Bucket] ), 1, 0 ) )

请注意,在此方法中,我将计数和随后的存储分为两个步骤,而不是像链接问题中那样将它们组合为一个步骤。

答案 1 :(得分:0)

超级!当我不在Axis上使用month时,它可以正常工作。在更大的数据集上(具有更多月份的数据),在所有轴值上都对所有数据求和。因此,所有存储桶组都具有相同的数据。我试图像这样将月份列添加到分组:

VAR Summary =
    SUMMARIZE (
        ALLSELECTED ( pbi_box_active_devices_4 ),
        pbi_box_active_devices_4[usr],
        pbi_box_active_devices_4[month],
        "Devices", DISTINCTCOUNT ( pbi_box_active_devices_4[device] )
    )

但是它没有按预期工作。