PowerApps - 一个集合为另一个集合提供列表查找
PowerApps - One Collection feeds another, with List lookups
这里有几个我要尝试的步骤。
第 1 步:
我使用以下命令创建了一个集合 (ScanDataCollection):
ClearCollect(ScanDataCollection,Split(ScanData.Text,Char(10)));
其中 ScanData 是一个多行文本控件,包含如下数据字符串:
REQ1805965.RITM2055090.01
REQ1805965.RITM2055091.01
REQ1805982.RITM2055144.01
REQ1805982.RITM2055145.01
这产生了一个集合:
RESULT
REQ1805965.RITM2055090.01
REQ1805965.RITM2055091.01
REQ1805982.RITM2055144.01
REQ1805982.RITM2055145.01
此列表中的唯一查找值是 RITM 字符串(例如:RITM2055091)
我想构建一个如下所示的集合:
CUSTOMERNAME CUSTOMEREMAIL MANAGERNAME MANAGEREMAIL ITEMLIST
Edward edward@fish.com Tony tony@fish.com <li><strong>REQ1805965 - RITM2055090 - Vulcan Banana</strong></li>
Edward edward@fish.com Tony tony@fish.com <li><strong>REQ1805965 - RITM2055091 - Vulcan Grape</strong></li>
Joseph joey@fish.com Kate kate@fish.com <li><strong>REQ1805982 - RITM2055144 - Romulan Catfish</strong></li>
Joseph joey@fish.com Kate kate@fish.com <li><strong>REQ1805982 - RITM2055145 - Romulan Salmon</strong></li>
行中的值来自 SharePoint 中的列表(目前称为“Spiderfood”)(这是 RITM 值通常唯一的地方,可用作查找):
Title REQUEST RITM TASK OPENED_DATE ITEM_DESCRIPTION VIP CUSTOMER_NAME CUSTOMER_NT MANAGER_NAME MANAGER_NT TASK_DESCRIPTION CUSTOMER_LOCATION
8-5-2021 REQ1805965 RITM2055090 TASK123 7-27-2021 Vulcan Banana false Edward edward@fish.com Tony tony@fish.com a string a string
8-5-2021 REQ1805965 RITM2055091 TASK123 7-27-2021 Vulcan Grape false Edward edward@fish.com Tony tony@fish.com a string a string
8-5-2021 REQ1805982 RITM2055144 TASK123 7-27-2021 Romulan Catfish false Joseph joey@fish.com Kate kate@fish.com a string a string
8-5-2021 REQ1805982 RITM2055145 TASK123 7-27-2021 Romulan Salmon false Joseph joey@fish.com Kate kate@fish.com a string a string
...[among hundreds of other records in this List]
然后...
第 2 步:
拿我上面建的Collection,deduplicate,基于CUSTOMEREMAIL,但是在去重的过程中,连接ITEMLIST列中的项目。
结果将是一个 只有两行 的集合,例如:
CUSTOMERNAME CUSTOMEREMAIL MANAGERNAME MANAGEREMAIL ITEMLIST
Edward edward@fish.com Tony tony@fish.com <li><strong>REQ1805965 - RITM2055090 - Vulcan Banana</strong></li><li><strong>REQ1805965 - RITM2055091 - Vulcan Grape</strong></li>
Joseph joey@fish.com Kate kate@fish.com <li><strong>REQ1805982 - RITM2055144 - Romulan Catfish</strong></li><li><strong>REQ1805982 - RITM2055145 - Romulan Salmon</strong></li>
我当然会感激guidance/suggestions,拜托了!
提前致谢!
好的,第 1 步:
ClearCollect(ScanDataCollection,Split(ScanData.Text,Char(10)));
ClearCollect(MailingListExploded, AddColumns(ScanDataCollection,
"CustomerName", LookUp('Spiderfood - RITMs', RITM = Mid(Result, 12, 11), Customer_Name),
"CustomerEmail", "edward@fish.com", // this is what I use as a test so that I don't email customers.
//"CustomerEmail", LookUp('Spiderfood - RITMs', RITM = Mid(Result, 12, 11), Customer_NT),
"ManagerName", LookUp('Spiderfood - RITMs', RITM = Mid(Result, 12, 11), Manager_Name),
"ManagerEmail", LookUp('Spiderfood - RITMs', RITM = Mid(Result, 12, 11), Manager_NT),
"ItemListHTML", "<li><strong>" & Left(Result,10) & " - " & Mid(Result, 12, 11) & " - " & LookUp('Spiderfood - RITMs', RITM = Mid(Result, 12, 11), Item_Description) & "</li></strong>"));
它从 ScanDataCollection 添加了一个名为“Result”的附加列,但我可以接受。 (我稍后拿出来)
我不得不将该特定列表 ('Spiderfood - RITMs') 作为资源添加到 PowerApp 项目中,这让我花了一分钟才记住。德普
如果数据集非常大(好吧,大约有 15,000,不等),它会提供有关使用 Lookup 的委派警告,但现在,我不会担心它。
现在,进入第 2 步:
如果能更好地理解 GROUPBY 函数,以及它如何可以有多个参数,以及连接字符串有点让人头疼,那将有助于我更快地解决这个问题。
但它似乎有效,所以这里是:
// Trim away the Result column
ClearCollect(MailingListExplodedTrimmed, DropColumns(MailingListExploded, "Result"));
// Group and concatenate - TransmissionGrid is what we need to send the emails
ClearCollect(RecordsByCustEmail, GroupBy(MailingListExplodedTrimmed, "CustomerEmail", "CustomerName", "ManagerName", "ManagerEmail", "OrderData"));
ClearCollect(TransmissionGridExtra, AddColumns(RecordsByCustEmail, "ConcatenatedOrderString", Concat(OrderData, ItemListHTML)));
ClearCollect(TransmissionGrid, DropColumns(TransmissionGridExtra, "OrderData"));
Notify("Process complete!");
我可能可以通过嵌套来减少一些步骤,但在这种情况下,我想非常明显,以防我必须在 96 小时内查看它。
无论如何,这就是为我做的。前进!
这里有几个我要尝试的步骤。
第 1 步:
我使用以下命令创建了一个集合 (ScanDataCollection):
ClearCollect(ScanDataCollection,Split(ScanData.Text,Char(10)));
其中 ScanData 是一个多行文本控件,包含如下数据字符串:
REQ1805965.RITM2055090.01
REQ1805965.RITM2055091.01
REQ1805982.RITM2055144.01
REQ1805982.RITM2055145.01
这产生了一个集合:
RESULT
REQ1805965.RITM2055090.01
REQ1805965.RITM2055091.01
REQ1805982.RITM2055144.01
REQ1805982.RITM2055145.01
此列表中的唯一查找值是 RITM 字符串(例如:RITM2055091)
我想构建一个如下所示的集合:
CUSTOMERNAME CUSTOMEREMAIL MANAGERNAME MANAGEREMAIL ITEMLIST
Edward edward@fish.com Tony tony@fish.com <li><strong>REQ1805965 - RITM2055090 - Vulcan Banana</strong></li>
Edward edward@fish.com Tony tony@fish.com <li><strong>REQ1805965 - RITM2055091 - Vulcan Grape</strong></li>
Joseph joey@fish.com Kate kate@fish.com <li><strong>REQ1805982 - RITM2055144 - Romulan Catfish</strong></li>
Joseph joey@fish.com Kate kate@fish.com <li><strong>REQ1805982 - RITM2055145 - Romulan Salmon</strong></li>
行中的值来自 SharePoint 中的列表(目前称为“Spiderfood”)(这是 RITM 值通常唯一的地方,可用作查找):
Title REQUEST RITM TASK OPENED_DATE ITEM_DESCRIPTION VIP CUSTOMER_NAME CUSTOMER_NT MANAGER_NAME MANAGER_NT TASK_DESCRIPTION CUSTOMER_LOCATION
8-5-2021 REQ1805965 RITM2055090 TASK123 7-27-2021 Vulcan Banana false Edward edward@fish.com Tony tony@fish.com a string a string
8-5-2021 REQ1805965 RITM2055091 TASK123 7-27-2021 Vulcan Grape false Edward edward@fish.com Tony tony@fish.com a string a string
8-5-2021 REQ1805982 RITM2055144 TASK123 7-27-2021 Romulan Catfish false Joseph joey@fish.com Kate kate@fish.com a string a string
8-5-2021 REQ1805982 RITM2055145 TASK123 7-27-2021 Romulan Salmon false Joseph joey@fish.com Kate kate@fish.com a string a string
...[among hundreds of other records in this List]
然后...
第 2 步:
拿我上面建的Collection,deduplicate,基于CUSTOMEREMAIL,但是在去重的过程中,连接ITEMLIST列中的项目。
结果将是一个 只有两行 的集合,例如:
CUSTOMERNAME CUSTOMEREMAIL MANAGERNAME MANAGEREMAIL ITEMLIST
Edward edward@fish.com Tony tony@fish.com <li><strong>REQ1805965 - RITM2055090 - Vulcan Banana</strong></li><li><strong>REQ1805965 - RITM2055091 - Vulcan Grape</strong></li>
Joseph joey@fish.com Kate kate@fish.com <li><strong>REQ1805982 - RITM2055144 - Romulan Catfish</strong></li><li><strong>REQ1805982 - RITM2055145 - Romulan Salmon</strong></li>
我当然会感激guidance/suggestions,拜托了!
提前致谢!
好的,第 1 步:
ClearCollect(ScanDataCollection,Split(ScanData.Text,Char(10)));
ClearCollect(MailingListExploded, AddColumns(ScanDataCollection,
"CustomerName", LookUp('Spiderfood - RITMs', RITM = Mid(Result, 12, 11), Customer_Name),
"CustomerEmail", "edward@fish.com", // this is what I use as a test so that I don't email customers.
//"CustomerEmail", LookUp('Spiderfood - RITMs', RITM = Mid(Result, 12, 11), Customer_NT),
"ManagerName", LookUp('Spiderfood - RITMs', RITM = Mid(Result, 12, 11), Manager_Name),
"ManagerEmail", LookUp('Spiderfood - RITMs', RITM = Mid(Result, 12, 11), Manager_NT),
"ItemListHTML", "<li><strong>" & Left(Result,10) & " - " & Mid(Result, 12, 11) & " - " & LookUp('Spiderfood - RITMs', RITM = Mid(Result, 12, 11), Item_Description) & "</li></strong>"));
它从 ScanDataCollection 添加了一个名为“Result”的附加列,但我可以接受。 (我稍后拿出来)
我不得不将该特定列表 ('Spiderfood - RITMs') 作为资源添加到 PowerApp 项目中,这让我花了一分钟才记住。德普
如果数据集非常大(好吧,大约有 15,000,不等),它会提供有关使用 Lookup 的委派警告,但现在,我不会担心它。
现在,进入第 2 步:
如果能更好地理解 GROUPBY 函数,以及它如何可以有多个参数,以及连接字符串有点让人头疼,那将有助于我更快地解决这个问题。
但它似乎有效,所以这里是:
// Trim away the Result column
ClearCollect(MailingListExplodedTrimmed, DropColumns(MailingListExploded, "Result"));
// Group and concatenate - TransmissionGrid is what we need to send the emails
ClearCollect(RecordsByCustEmail, GroupBy(MailingListExplodedTrimmed, "CustomerEmail", "CustomerName", "ManagerName", "ManagerEmail", "OrderData"));
ClearCollect(TransmissionGridExtra, AddColumns(RecordsByCustEmail, "ConcatenatedOrderString", Concat(OrderData, ItemListHTML)));
ClearCollect(TransmissionGrid, DropColumns(TransmissionGridExtra, "OrderData"));
Notify("Process complete!");
我可能可以通过嵌套来减少一些步骤,但在这种情况下,我想非常明显,以防我必须在 96 小时内查看它。
无论如何,这就是为我做的。前进!