SELECTEDVALUE未返回预期值



我在Power BI:中创建了此表

DimProduct = UNION(
ROW("ProductId", 1, "Product", "AB","ProductType","A"),
ROW("ProductId", 2, "Product", "AC","ProductType","A"),
ROW("ProductId", 3, "Product", "AD","ProductType","A"),
ROW("ProductId", 4, "Product", "BB","ProductType","B"),
ROW("ProductId", 5, "Product", "BC","ProductType","B")
)

然后我创建了这个表:

DimProductSelectedType = 
VAR vSelectedProduct=
SELECTEDVALUE('DimProduct'[Product])
RETURN
ROW("Col1",vSelectedProduct)

我把DimProduct[Product]放入切片机

我将DimProductSelectedType放入列表

我希望当我从产品切片器中选择一个产品时,它会出现在列表中。但名单总是空白的。

我曾认为SELECTEDVALUE将反映切片机中选择的任何单个值

这是我的直接问题,可以概括为

使用DAX计算的表列在导入时进行评估。在运行时评估措施

实际上正在努力的是:

  1. 在切片机中挑选产品
  2. 确定产品产品类型
  3. 显示将所选产品与该产品类型内的所有其他产品进行比较的可视化

我实际上是从这个开始的,现在我正在努力恢复。

DimProductTypeSelected = 
VAR vSelectedProduct=
SELECTEDVALUE('DimProduct'[Product])
VAR vSelectedProductType=
SUMMARIZE(  
FILTER(
ALLSELECTED(DimProduct),
DimProduct[Product]=vSelectedProduct
),
DimProduct[ProductType]
)

RETURN
FILTER(
ALLSELECTED(DimProduct),
DimProduct[ProductType]=vSelectedProductType
)

当您在切片器中选择项目时,它已经在其他视觉效果上创建了fitler上下文,因此不需要手动覆盖它。您需要做的是为所有产品创建一个fitler上下文,例如使用ALLALLSELECTED作为比较器。但为了使其成为动态的,您需要使用度量值,表是静态的,不会随着UI的更改而重新计算。

为了解释为什么用当前的方法得到结果,表会刷新一次,之后不会更改。因此,vSelectedProduct总是返回空白,因为在刷新此表时,DimProduct[Product]上没有过滤器上下文,因此它默认为空白

如果您创建一个度量Measure = SELECTEDVALUE('DimProduct'[Product])并将DimProduct[Product]放入切片器,它将显示单选的所选产品,多选(或所有值(为空

编辑关于问题的第二部分——选择一个产品将在其他视觉效果中只为该产品创建一个过滤上下文。然后你可以使用例如:

CountRowsPerType = 
VAR vSelectedType =
SELECTEDVALUE('DimProduct'[ProductType])
RETURN
CALCULATE( COUNTROWS(DimProduct), ALL(DimProduct[Product]), 'DimProduct'[ProductType] = vSelectedType )

其将返回该类型的所有产品的计数,即使视觉将仅显示所选产品

最新更新