基于交叉突出显示筛选的度量来筛选其他表

Filtering other tables based on cross-highlighting a filtered measure

我想对特定条件下的记录进行计数,并允许人们向下过滤到相关记录,但是 select 测量值(进行过滤以便仅对特定行计数)不是交叉的如我所料过滤其他人。也许这是不可能的,或者我只是做错了,但我很感激帮助。

我有一个table:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45Wci4tLsnPTS1SMFTSUTJUitVBEjICChmgChljCplgajSFCMUCAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [#"Customer Name" = _t, #"Ordered Recently" = _t]),
    #"Change to INT" = Table.TransformColumnTypes(Source,{{"Ordered Recently", Int64.Type}}),
    #"Change to T/F" = Table.TransformColumnTypes(#"Change to INT",{{"Ordered Recently", type logical}})
in
    #"Change to T/F"

结果如下所示:

Customer Name   Ordered Recently
Customer 1      True
Customer 2      False
Customer 3      False
Customer 4      True
Customer 5      True

我添加了两个措施:

Count Total = COUNTROWS(Customers)

Count Recent = CALCULATE([Count Total], filter(Customers, Customers[Ordered Recently]))

如果我将两个度量都放在条形图中并突出显示 "Count Recent" 度量,我希望它知道根据度量中存在的 FILTER 语句过滤其他视觉对象,但事实并非如此发生。选择此值不会影响我页面上的任何其他内容(仅包括行数)。

目标是让人们 select 计算行数的度量,然后查看这些行中数据的构成(select 延迟项目的计数并过滤其他视觉对象以描述那些迟到的项目)。

这是可能的还是我做错了什么?

示例:

这是现在的样子,没有任何东西 selected:

当我 select 黑条("Ordered Recently" 度量)时,现在没有任何变化 - 但这是我想要发生的事情(实际上是通过 [=45 上的屏幕外切片器实现的) =] 字段):

我知道如果我的度量是整数字段的 SUM,它会包括计算中的每一行 - 即使行值为零 - 并且无法基于此过滤我的数据集。但是,在这种情况下,我的措施实际上是在数据集上使用 FILTER,以便它只计算具有特定条件集的行 - 鉴于此,它应该能够过滤请求的 table,然后流过该过滤器通过我的数据集的其余部分(如果我 select 从我使用与系列相同的字段的图表中编辑条形图的方式相同 - 当我这样做时它是如何工作的:

PBIX file to download as an example

不,我认为不可能根据度量定义内的筛选器来制作度量值 cross-filter 其他视觉对象。

但是,您可以单击行 header Customer 3,它应该 cross-filter 其他视觉效果仅包括该客户。您为矩阵视觉对象的行或列设置的任何 table 列都应以这种方式表现。


这是一个棘手的解决方法:

当您将要用作过滤器的列用作图例或轴(如上一张图片)时,创建一个显示正确值的度量。例如,在这种情况下,您可以这样做:

Total Customers =
VAR TF = SELECTEDVALUE ( Customers[Ordered Recently] )
RETURN
    COUNTROWS (
        FILTER (
            ALLSELECTED ( Customers ),
            IF ( TF, TF, TF || Customers[Ordered Recently] )
        )
    )

这会按照您的要求运行,但未按照您的要求进行标记。为此,请创建一个包含所需标签的计算列。例如,

Label = IF(Customers[Ordered Recently], "Ordered Recently", "Total Customers")

然后将 Ordered Recently 从轴上移开,将 Label 列放入图例框中,得到:

你的过滤器参数确实是 Filter(All(Customers, Customers[Ordered Recently]) 您删除 Customer Table 上的所有过滤器,然后指定 Ordered Recently Column 作为过滤器。 尝试

[MeasureName] =Calculate([Count Total], All(Customer), Values(Customer[Recently Ordered]), Customer[Recently Ordered] = “True”)