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 小时内查看它。

无论如何,这就是为我做的。前进!