你不能有一个表达式直接过滤并给出列名作为结果......你可以做的是反透视你的表,这样你就有一个像下面这样的结构:
Name Process Value
A Process1 1
A Process2 2
...
A Process59 0
B Process1 4
B Process2 0
...
B Process59 0
C Process1 2
C Process2 3
...
C Process59 1
获得该格式的数据后,您可以根据列值应用过滤器。
要创建未透视表,您可以使用如下表达式(假设您的数据源称为“MyDataSource”):
Clear(UnpivotedCollection);
ForAll(
MyDataSource,
Collect(
UnpivotedCollection,
{ Name: Name, Attribute: "Process1", Value: Process1 },
{ Name: Name, Attribute: "Process2", Value: Process2 },
{ Name: Name, Attribute: "Process3", Value: Process3 },
...
{ Name: Name, Attribute: "Process58", Value: Process58 },
{ Name: Name, Attribute: "Process59", Value: Process59 }))
如果您在应用程序的 OnStart 属性中有此表达式(或在更新数据源后可以刷新未透视集合的其他位置),您可以开始使用它。现在,如果您有一个 Dropdown 控件,其 Items 属性具有以下表达式:
MyDataSource.Name
然后,您可以为其 Items 属性创建一个具有以下表达式的库:
Filter(
UnpivotedCollection,
Name = Dropdown1.Selected.Name
Value > 0)
您将在图库中获得具有正值的给定名称的记录。