问题描述
我的PowerApps
的数据源是Excel表。用户输入后,excel表如下所示。在下图中,可以看到“ Sys1”在Excel表中出现了两次,从而为PowerApps中的同一系统gallery创建了一个额外的图块。我的问题是如何避免在PowerApps中重复创建图块?下面是gallery和Tile的代码。
我是PowerApps
的新手。提供说明代码。
注意:我忘了在Sys之后添加Name。以下屏幕截图中的第一列名称应为“系统名称”
图库->项目属性[CODE]
Filter(Table1,Startswith('Sys Name'),"Sys"))
瓷砖->文本属性[CODE]
ThisItem.'Sys Name'
解决方法
要删除重复项,可以使用GroupBy function并获取每个组中的First个元素。一旦有了这些,就可以使用一些table shaping functions (AddColumns,DropColumns)重新创建原始的列结构,如果需要的话:
DropColumns(
AddColumns(
GroupBy(
Filter(Table1,StartsWith('Sys',"Sys")),"Sys","BySys"),"Model#",First(BySys).'Model#',"Current Status",First(BySys).'Current Status',"Previous Status",First(BySys).'Previous Status'),"BySys")
您可以从内而外地读取上面的表达式:首先仅对“ Sys”列以“ Sys”(您原来拥有)开头的行过滤Table1。过滤器的结果将按“ Sys”列进行分组,所有具有相似值的行均会按“ BySys”列进行分组。为此,我们通过获取分组元素中的第一个来添加三列:“ Model#”,“当前状态”和“先前状态”。最后,我们删除最外层函数的分组列('BySys')。
如果您不想在表达式中列出原始数据源的所有属性,则可以使用GroupBy表达式作为图库中的项:
GroupBy(
Filter(Table1,"BySys")
在图库模板中,您可以具有一个标签,将“ Sys”列直接显示为ThisItem.Sys
,但是如果要访问其他列,则需要从组中选择要使用的内容要显示。例如,要显示该特定“ Sys”值的第一行的型号,您可以将此表达式作为标签的Text属性:
First(ThisItem.BySys).'Model#'
另一种选择是,如果要显示许多其他属性并且不想继续重复对First
的调用,则将其添加为图库项目的另一个(记录)属性:
AddColumns(
GroupBy(
Filter(Table1,"FirstSys",First(BySys))
现在,在您的图库中,您可以使用具有以下属性的标签:
ThisItem.FirstSys.'Model#'
ThisItem.FirstSys.'Current Status'
以此类推。