我在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计算的表列在导入时进行评估。在运行时评估措施
我实际上正在努力的是:
- 在切片机中挑选产品
- 确定产品产品类型
- 显示将所选产品与该产品类型内的所有其他产品进行比较的可视化
我实际上是从这个开始的,现在我正在努力恢复。
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上下文,例如使用ALL
或ALLSELECTED
作为比较器。但为了使其成为动态的,您需要使用度量值,表是静态的,不会随着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 )
其将返回该类型的所有产品的计数,即使视觉将仅显示所选产品