cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
NiBes
Frequent Visitor

Is it normal that Power Automate is so slow in making simple Loops where it adds strings to variables or compares Elemts with each other?

I created a Flow where it should get all files and Folders on a SharePoint Side and it will color all empty Folders red if they do not contain any files, otherwise, they will get yellow.

 

It adds them each in an array (Folders in "Folders Array" and Files in "Sorted Files array" / "Unique Files Path Array" where unique file Paths are stored)

 

I then used an  "apply to each" loop to get "all file Folders" Paths split and added all parts of the file path to each unique file Path. I then added each Path only once to the "All Unique File Folders Array"  via the union Function.

This part worked quite well. It may be optimized but it seems ok.

 

The next part a bigger Apply to each loop, takes a lot of time.

In it I compare each Filepath on SharePoint with the "All Unique File Folders Array" and if they match I change the Info in "Folders Array" to Is_Full = true. If they do not match they will receive Is_Full = false.

This takes a long time to work. But I'm not sure how I could implement this kind of logic in power automate style.

I know you could achieve better results by using Concurrency. But then I do not know how to implement breaks in loops. (Maybe I'm too spoilt from languages like C++ / Python and do not understand Power Automate structure well enough)

Start of the LoopStart of the LoopThe Inner Loop (Part1)The Inner Loop (Part1)The Inner Loop (Part2)The Inner Loop (Part2)End of the Loop BlockEnd of the Loop Block

 

The last part is a simple "apply to each" loop where it loops threw all Elemtens in the "Updated Folder Arry" where all Infos are saved for each folder. There I use concurrency enabled because I could use a simple if clause to make the color change for each folder on its own.

 

Is there a simple way to make this flow faster?

How could I use maybe concurrency in the Apply to Each Loop where they compare the All Unique File Folders Array with the "Folders Array"?

 

 

 

Timing with only 36 Folders and 26 populated:

Flow Timing part 1Flow Timing part 1Flow Timing part 2Flow Timing part 2Flow Timing part 3Flow Timing part 3

10 REPLIES 10
FLMike
Multi Super User
Multi Super User

@NiBes 

 

Unfortunately its near impossible for us to give you concrete answers without us being able to run your flow. Its great you shared it, so thank you, but its still very hard.

 

I would go to the Details Page of your Flow

 

P.S. As for Concurrency, its possible sure and you could use it, but you cannot use Variables in them or it will mess the values in the variables up, as they are not thread safe.

 

You might be able to instead.

-have a parent flow

-have that parent flow in an Apply to each with concurrency on and have it pass to the Child the folder its supposed to compare and the path it compares it too

 

This is high level, but it would speed you up alot


If you like my answer, I would really appreciate if you please Mark it as Resolved, and give it a thumbs up, so it can help others

Cheers

Thank You
Michael Gernaey MCT | MCSE | MCP | Self-Contractor| Ex-Microsoft
https://gernaeysoftware.com
LinkedIn: https://www.linkedin.com/in/michaelgernaey

 

takolota
Multi Super User
Multi Super User

@NiBes 

 

You could probably drastically speed up your flow by learning to use Filter array actions, like instead of conditionals in a loop,

https://www.powertechtips.com/filter-array-power-automate/

Select actions, & the back-end SharePoint column names to use in filters to automatically select only folders & only not folders (files) directly on your data pull

https://sharepoint.stackexchange.com/questions/293905/how-to-query-only-documents-from-a-library-fil...

@FLMike ,

thank you for your input/help.

 

I will dig deeper into that topic.

 

Could you recommend one source where this is taught step by step?

Hopefully, that would help.

@takolota ,

OK never heard of them directly.

Maybe there is a fast way to find matching names / Paths in both lists then?

 

Because I think I kind of separated both File Folders and only Folders quite well. Because I also used a Filter Query in the first HTTP Get all Files / Folders request to SharePoint. (FSObjType eq 0 / ... 1) Right now the only problem I see is the Horendes Time my loop takes to compare the two lists for matches and then update the information about that Folder.

 

I tried to scale the Folderstructure a bit (Now 52 Folders with 25 Populated down the Path)and that took too long for a useful use case.

Flow with 52 Folders_part1Flow with 52 Folders_part1Flow with 52 Folders_part2Flow with 52 Folders_part2

This Flow would be only used once per day or once per week to update the folder's visual structure. For creating or uploading folders/files I created a separate one to update each upper folder each time a new file is created.

@NiBes 

 

If you have an array of all the folder items and an array of all the full paths of all the file items, then you should be able to use the Filter array on all the folder items with the condition checking if…

string(InsertFilePathsArray) contains item()?[‘FolderNameColumnName’]

That would get folders with any files for yellow.

 

And/Or you could use ‘does not contain’ to get folders without any files for red.

 

However, this assumes that any folder name isn’t potentially repeated elsewhere in the file paths, like for an earlier level of folders.

@takolota

OK so you mean I should add a condition around the Filter Array? Or did you mean I should edit the Filter array in the advanced mode like "@equals("Folder("Full_Folder_Path"),File_Folder")"

In this case, I still have to use two apply each loop where one has to loop threw "Folders Array" => Folder and the other threw "All Unique File Folders Array" => File_Folder. Or am I completely off?

 

I'm still stuck in the Python-like thinking in my head where I have to make a loop in a loop when I do not want to use "list(set(A).intersection(B))". 😕

 

Something like: (Sorry bad pseudocode)

For Folder in "Folders Array":
  For File_Folder in "All Unique File Folders Array":
    if(Folder('Full_Folder_path') == File_Folder):
      Do something
      Break

 

Also here are some sample values saved in each Array to compare.

Folders Array:

 
[
  {
    "Name": "07 Projekte",
    "Ist_Folder": true,
    "Folder_Path": "Technology/",
    "Full_Folder_Path": "Technology/07 Projekte",
    "ID": 1
  },
  {
    "Name": "08 VT",
    "Ist_Folder": true,
    "Folder_Path": "Technology/",
    "Full_Folder_Path": "Technology/08 VT",
    "ID": 2
  },...
]

 

All Unique File Folders Array:

[
  "Technology/07 Projekte",
  "Technology/07 Projekte/04 PVB MOWITAL",
  "Technology/07 Projekte/04 PVB MOWITAL/C in progress",
  "Technology/07 Projekte/00 Archiv",
  "Technology/04 Instandhaltung",...
]

 

@NiBes 

The Filter array has something like a built in loop. It iterates over each item in the array you feed it in the From input & runs the condition. Then it only returns items where that condition results to true.

But I suspect it uses a GPU & it definitely avoids a lot of back & forth with API calls to the servers for each action in a loop that slow things down.

@takolota

Ok, I tried to use your Filter Array setting. I overlooked that I could change the equal to contains.

Now the Body gets populated but it does not filter it at all.

It seems like it passes everything threw.

 

From: variables('Folders Array')

@contains(string(variables('All Unique File Folders Array')), string(item()?['Full_Folder_Path']))

Not Filtered OutputNot Filtered Output

 

 

Any Ideas why? Or how i could filter it right?

@NiBes 

 

Isn’t folder path going to reference the parent folder of each item, not the folder name itself which is in the Name property?

@takolota 

As far as I figured out, the folder path in the Folder array is as you said the parent folder / Path to the parent folder.

The Full_Folder_Path will normally select the direct file or item from the request.

 

But I filtered in the HTTP Request already only for folders so the Full Folder Path is the direct path to the Folder with the Name Property (The folder Item).

 

My problem with the filter array is I could not debug what and how it selects/compares the items. So it is still possible that it compares them wrong.

Every time the Full_Folder_Path of one Folders Array Items matches with one Item in All Unique File Folder Array I will change the Color information for that one.

Helpful resources

Announcements

Community will be READ ONLY July 16th, 5p PDT -July 22nd

Dear Community Members,   We'd like to let you know of an upcoming change to the community platform: starting July 16th, the platform will transition to a READ ONLY mode until July 22nd.   During this period, members will not be able to Kudo, Comment, or Reply to any posts.   On July 22nd, please be on the lookout for a message sent to the email address registered on your community profile. This email is crucial as it will contain your unique code and link to register for the new platform encompassing all of the communities.   What to Expect in the New Community: A more unified experience where all products, including Power Apps, Power Automate, Copilot Studio, and Power Pages, will be accessible from one community.Community Blogs that you can syndicate and link to for automatic updates. We appreciate your understanding and cooperation during this transition. Stay tuned for the exciting new features and a seamless community experience ahead!

Summer of Solutions | Week 4 Results | Winners will be posted on July 24th

We are excited to announce the Summer of Solutions Challenge!    This challenge is kicking off on Monday, June 17th and will run for (4) weeks.  The challenge is open to all Power Platform (Power Apps, Power Automate, Copilot Studio & Power Pages) community members. We invite you to participate in a quest to provide solutions to as many questions as you can. Answers can be provided in all the communities.    Entry Period: This Challenge will consist of four weekly Entry Periods as follows (each an “Entry Period”)   - 12:00 a.m. PT on June 17, 2024 – 11:59 p.m. PT on June 23, 2024 - 12:00 a.m. PT on June 24, 2024 – 11:59 p.m. PT on June 30, 2024 - 12:00 a.m. PT on July 1, 2024 – 11:59 p.m. PT on July 7, 2024 - 12:00 a.m. PT on July 8, 2024 – 11:59 p.m. PT on July 14, 2024   Entries will be eligible for the Entry Period in which they are received and will not carryover to subsequent weekly entry periods.  You must enter into each weekly Entry Period separately.   How to Enter: We invite you to participate in a quest to provide "Accepted Solutions" to as many questions as you can. Answers can be provided in all the communities. Users must provide a solution which can be an “Accepted Solution” in the Forums in all of the communities and there are no limits to the number of “Accepted Solutions” that a member can provide for entries in this challenge, but each entry must be substantially unique and different.    Winner Selection and Prizes: At the end of each week, we will list the top ten (10) Community users which will consist of: 5 Community Members & 5 Super Users and they will advance to the final drawing. We will post each week in the News & Announcements the top 10 Solution providers.  At the end of the challenge, we will add all of the top 10 weekly names and enter them into a random drawing.  Then we will randomly select ten (10) winners (5 Community Members & 5 Super Users) from among all eligible entrants received across all weekly Entry Periods to receive the prize listed below. If a winner declines, we will draw again at random for the next winner.  A user will only be able to win once overall. If they are drawn multiple times, another user will be drawn at random.  Individuals will be contacted before the announcement with the opportunity to claim or deny the prize.  Once all of the winners have been notified, we will post in the News & Announcements of each community with the list of winners.   Each winner will receive one (1) Pass to the Power Platform Conference in Las Vegas, Sep. 18-20, 2024 ($1800 value). NOTE: Prize is for conference attendance only and any other costs such as airfare, lodging, transportation, and food are the sole responsibility of the winner. Tickets are not transferable to any other party or to next year’s event.   ** PLEASE SEE THE ATTACHED RULES for this CHALLENGE**   Week 1 Results: Congratulations to the Week 1 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge.   Community MembersNumber SolutionsSuper UsersNumber Solutions Deenuji 9 @NathanAlvares24  17 @Anil_g  7 @ManishSolanki  13 @eetuRobo  5 @David_MA  10 @VishnuReddy1997  5 @SpongYe  9JhonatanOB19932 (tie) @Nived_Nambiar  8 @maltie  2 (tie)   @PA-Noob  2 (tie)   @LukeMcG  2 (tie)   @tgut03  2 (tie)       Week 2 Results: Congratulations to the Week 2 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Week 2: Community MembersSolutionsSuper UsersSolutionsPower Automate  @Deenuji  12@ManishSolanki 19 @Anil_g  10 @NathanAlvares24  17 @VishnuReddy1997  6 @Expiscornovus  10 @Tjan  5 @Nived_Nambiar  10 @eetuRobo  3 @SudeepGhatakNZ 8     Week 3 Results: Congratulations to the Week 3 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Week 3:Community MembersSolutionsSuper UsersSolutionsPower Automate Deenuji32ManishSolanki55VishnuReddy199724NathanAlvares2444Anil_g22SudeepGhatakNZ40eetuRobo18Nived_Nambiar28Tjan8David_MA22   Week 4 Results: Congratulations to the Week 4 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Week 4:Community MembersSolutionsSuper UsersSolutionsPower Automate Deenuji11FLMike31Sayan11ManishSolanki16VishnuReddy199710creativeopinion14Akshansh-Sharma3SudeepGhatakNZ7claudiovc2CFernandes5 misc2Nived_Nambiar5 Usernametwice232rzaneti5 eetuRobo2   Anil_g2   SharonS2  

Check Out | 2024 Release Wave 2 Plans for Microsoft Dynamics 365 and Microsoft Power Platform

On July 16, 2024, we published the 2024 release wave 2 plans for Microsoft Dynamics 365 and Microsoft Power Platform. These plans are a compilation of the new capabilities planned to be released between October 2024 to March 2025. This release introduces a wealth of new features designed to enhance customer understanding and improve overall user experience, showcasing our dedication to driving digital transformation for our customers and partners.    The upcoming wave is centered around utilizing advanced AI and Microsoft Copilot technologies to enhance user productivity and streamline operations across diverse business applications. These enhancements include intelligent automation, AI-powered insights, and immersive user experiences that are designed to break down barriers between data, insights, and individuals. Watch a summary of the release highlights.    Discover the latest features that empower organizations to operate more efficiently and adaptively. From AI-driven sales insights and customer service enhancements to predictive analytics in supply chain management and autonomous financial processes, the new capabilities enable businesses to proactively address challenges and capitalize on opportunities.    

Updates to Transitions in the Power Platform Communities

We're embarking on a journey to enhance your experience by transitioning to a new community platform. Our team has been diligently working to create a fresh community site, leveraging the very Dynamics 365 and Power Platform tools our community advocates for.  We started this journey with transitioning Copilot Studio forums and blogs in June. The move marks the beginning of a new chapter, and we're eager for you to be a part of it. The rest of the Power Platform product sites will be moving over this summer.   Stay tuned for more updates as we get closer to the launch. We can't wait to welcome you to our new community space, designed with you in mind. Let's connect, learn, and grow together.   Here's to new beginnings and endless possibilities!   If you have any questions, observations or concerns throughout this process please go to https://aka.ms/PPCommSupport.   To stay up to date on the latest details of this migration and other important Community updates subscribe to our News and Announcements forums: Copilot Studio, Power Apps, Power Automate, Power Pages

Users online (2,347)