代码之家  ›  专栏  ›  技术社区  ›  Przemyslaw Remin

如何检查Matrix visual是否只选择了一个值(单元格)?

  •  0
  • Przemyslaw Remin  · 技术社区  · 3 年前

    我想在可视化表格中只显示在可视化矩阵中突出显示的值。

    enter image description here

    当我们点击 4 值,然后我想在可视化表中显示该选择的详细信息。如果矩阵可视化未被过滤,则可视化表不应显示任何值。(视觉表格中的值勾选了“不汇总”选项,因为我想看到所有匹配的行都高亮显示。)

    enter image description here

    我试图通过DAX测量来解决这个问题,我可能会在视觉过滤器上进行测量:

    ShowValues = HASONEVALUE( Tab[Fruit] ) && HASONEVALUE( Tab[Color] )
    

    如果我们把它放在卡片上,这个度量正确地返回值。但它不会过滤Table visual上的任何内容,因为它从Fruit和Color列中获取过滤上下文,这就是为什么这个条件在该visual中总是TRUE,因为它总是有一个Fruit and Color值。

    如何在一个视觉(表)中推断出另一个可视化(矩阵)只有一个突出显示的值?

    Tab = 
    DATATABLE (
        "Fruit", STRING,
        "Color", STRING,
        "Values", INTEGER,
        {
            { "Apple", "red"    , 1 },
            { "Apple", "yellow" , 2 },
            { "Pearl", "red"    , 3 },
            { "Pearl", "yellow" , 1 },
            { "Pearl", "yellow" , 3 }
        }
    )
    
    0 回复  |  直到 3 年前
        1
  •  0
  •   Przemyslaw Remin    2 年前

    可以使用ALLSELECTED功能来解决此问题:

    ShowValues2 =
    IF (
        CALCULATE (
            HASONEVALUE ( Tab[Fruit] ) && HASONEVALUE ( Tab[Color] ),
            ALLSELECTED ()
        ),
        1,
        BLANK()
    )
    

    选项1。 我们可以将此度量值添加到可视化表的筛选器窗格中,并将其值设置为1。

    选项2。或者,我们可以将此度量值添加到可视化表的值中,它将自动仅显示非空白结果。此选项明显快于选项1。

    enter image description here

    编辑如果这种情况涉及维度表,代码就会变得更加棘手。

    ShowValues3 = 
    IF(
        CALCULATE(
            HASONEVALUE( dim_Fruits[Fruit] ) && HASONEVALUE( dim_Colors[Color] ),
            ALLSELECTED()
        )
            && HASONEVALUE( Fact[Values] ),
        1
    )
    
    

    ALLSELECTED函数只能应用于尺寸标注。

    使现代化出于性能原因,我最终得到了:

    SWITCH( TRUE(),
        NOT (COUNTROWS( Fact ) ) = 1, BLANK(),
        NOT (CALCULATE( HASONEVALUE( Dim_Fruits[Fruit] ), ALLSELECTED( Dim_Fruits[Fruit] ) ) ), BLANK(),
        NOT (CALCULATE( HASONEVALUE( Dim_Colors[Color] ), ALLSELECTED( Dim_Colors[Color] ) ) ), BLANK(),
        1
    )