
Announcements
Hey there, so I'm in quite the pickle pushing powerapps to its limits right now. I have an inventory catalog app that has been growing like crazy over the past few months and Its gotten to the point where initially this was going to be a part catalog to now its an entire data analytics tool for all our parts. I've already contacted a consulting group to help me migrate over to Bi which I think will be a more scalable option. However, in the meantime I still need this thing running for our users and recently our inventory has nearly doubled in size and that also means my load times have more than doubled.
Here is the formula that is having the biggest impact, I'm not sure if there is any way to speed up this formula, but any tips would be appreciated.
// Get highest value for row_number column to know exactly how many rows there are then divide by 2000 (the current max Power App can grab from the server in one batch)
Set(
_numberOfBatches,
Max('970_item_format_item_mast',RowNumber) / 2000
);
Concurrent(
If(_numberOfBatches > 0,
ClearCollect(WAmasterCollectAll0,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 0)
)
),
If(_numberOfBatches > 1,
ClearCollect(WAmasterCollectAll1,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 2000)
)
),
If(_numberOfBatches > 2,
ClearCollect(WAmasterCollectAll2,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 4000)
)
),
If(_numberOfBatches > 3,
ClearCollect(WAmasterCollectAll3,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 6000)
)
),
If(_numberOfBatches > 4,
ClearCollect(WAmasterCollectAll4,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 8000)
)
),
If(_numberOfBatches > 5,
ClearCollect(WAmasterCollectAll5,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 10000)
)
),
If(_numberOfBatches > 6,
ClearCollect(WAmasterCollectAll6,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 12000)
)
),
If(_numberOfBatches > 7,
ClearCollect(WAmasterCollectAll7,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 14000)
)
),
If(_numberOfBatches > 8,
ClearCollect(WAmasterCollectAll8,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 16000)
)
),
If(_numberOfBatches > 9,
ClearCollect(WAmasterCollectAll9,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 18000)
)
),
If(_numberOfBatches > 10,
ClearCollect(WAmasterCollectAll10,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 20000)
)
),
If(_numberOfBatches > 11,
ClearCollect(WAmasterCollectAll11,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 22000)
)
),
If(_numberOfBatches > 12,
ClearCollect(WAmasterCollectAll12,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 24000)
)
),
If(_numberOfBatches > 13,
ClearCollect(WAmasterCollectAll13,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 26000)
)
),
If(_numberOfBatches > 14,
ClearCollect(WAmasterCollectAll14,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 28000)
)
),
If(_numberOfBatches > 15,
ClearCollect(WAmasterCollectAll15,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 30000)
)
),
If(_numberOfBatches > 16,
ClearCollect(WAmasterCollectAll16,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 32000)
)
),
If(_numberOfBatches > 17,
ClearCollect(WAmasterCollectAll17,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 34000)
)
),
If(_numberOfBatches > 18,
ClearCollect(WAmasterCollectAll18,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 36000)
)
),
If(_numberOfBatches > 19,
ClearCollect(WAmasterCollectAll19,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 38000)
)
),
If(_numberOfBatches > 20,
ClearCollect(WAmasterCollectAll20,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 40000)
)
),
If(_numberOfBatches > 21,
ClearCollect(WAmasterCollectAll21,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 42000)
)
),
If(_numberOfBatches > 22,
ClearCollect(WAmasterCollectAll22,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 44000)
)
),
If(_numberOfBatches > 23,
ClearCollect(WAmasterCollectAll23,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 46000)
)
),
If(_numberOfBatches > 24,
ClearCollect(WAmasterCollectAll24,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 48000)
)
),
If(_numberOfBatches > 25,
ClearCollect(WAmasterCollectAll25,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 50000)
)
),
If(_numberOfBatches > 26,
ClearCollect(WAmasterCollectAll26,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 52000)
)
),
If(_numberOfBatches > 27,
ClearCollect(WAmasterCollectAll27,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 54000)
)
),
If(_numberOfBatches > 28,
ClearCollect(WAmasterCollectAll28,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 56000)
)
),
If(_numberOfBatches > 29,
ClearCollect(WAmasterCollectAll29,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 58000)
)
),
If(_numberOfBatches > 30,
ClearCollect(WAmasterCollectAll30,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 60000)
)
),
If(_numberOfBatches > 31,
ClearCollect(WAmasterCollectAll31,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 62000)
)
),
If(_numberOfBatches > 32,
ClearCollect(WAmasterCollectAll32,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 64000)
)
),
If(_numberOfBatches > 33,
ClearCollect(WAmasterCollectAll33,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 66000)
)
),
If(_numberOfBatches > 34,
ClearCollect(WAmasterCollectAll34,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 68000)
)
),
If(_numberOfBatches > 35,
ClearCollect(WAmasterCollectAll35,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 70000)
)
),
If(_numberOfBatches > 36,
ClearCollect(WAmasterCollectAll36,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 72000)
)
),
If(_numberOfBatches > 37,
ClearCollect(WAmasterCollectAll37,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 74000)
)
),
If(_numberOfBatches > 38,
ClearCollect(WAmasterCollectAll38,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 76000)
)
),
If(_numberOfBatches > 39,
ClearCollect(WAmasterCollectAll39,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 78000)
)
),
If(_numberOfBatches > 40,
ClearCollect(WAmasterCollectAll40,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 80000)
)
),
If(_numberOfBatches > 41,
ClearCollect(WAmasterCollectAll41,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 82000)
)
),
If(_numberOfBatches > 42,
ClearCollect(WAmasterCollectAll42,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 84000)
)
),
If(_numberOfBatches > 43,
ClearCollect(WAmasterCollectAll43,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 86000)
)
),
If(_numberOfBatches > 44,
ClearCollect(WAmasterCollectAll44,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 88000)
)
),
If(_numberOfBatches > 45,
ClearCollect(WAmasterCollectAll45,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 90000)
)
),
If(_numberOfBatches > 46,
ClearCollect(WAmasterCollectAll46,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 92000)
)
),
If(_numberOfBatches > 47,
ClearCollect(WAmasterCollectAll47,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 94000)
)
),
If(_numberOfBatches > 48,
ClearCollect(WAmasterCollectAll48,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 96000)
)
),
If(_numberOfBatches > 49,
ClearCollect(WAmasterCollectAll49,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 98000)
)
),
If(_numberOfBatches > 50,
ClearCollect(WAmasterCollectAll50,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 100000)
)
),
If(_numberOfBatches > 51,
ClearCollect(WAmasterCollectAll51,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 102000)
)
),
If(_numberOfBatches > 52,
ClearCollect(WAmasterCollectAll52,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 104000)
)
),
If(_numberOfBatches > 53,
ClearCollect(WAmasterCollectAll53,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 106000)
)
),
If(_numberOfBatches > 54,
ClearCollect(WAmasterCollectAll54,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 108000)
)
),
If(_numberOfBatches > 55,
ClearCollect(WAmasterCollectAll55,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 110000)
)
),
If(_numberOfBatches > 56,
ClearCollect(WAmasterCollectAll56,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 112000)
)
),
If(_numberOfBatches > 57,
ClearCollect(WAmasterCollectAll57,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 114000)
)
),
If(_numberOfBatches > 58,
ClearCollect(WAmasterCollectAll58,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 116000)
)
),
If(_numberOfBatches > 59,
ClearCollect(WAmasterCollectAll59,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 118000)
)
),
If(_numberOfBatches > 60,
ClearCollect(WAmasterCollectAll60,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 120000)
)
),
If(_numberOfBatches > 61,
ClearCollect(WAmasterCollectAll61,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 122000)
)
),
If(_numberOfBatches > 62,
ClearCollect(WAmasterCollectAll62,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 124000)
)
),
If(_numberOfBatches > 63,
ClearCollect(WAmasterCollectAll63,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 126000)
)
),
If(_numberOfBatches > 64,
ClearCollect(WAmasterCollectAll64,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 128000)
)
),
If(_numberOfBatches > 65,
ClearCollect(WAmasterCollectAll65,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 130000)
)
),
If(_numberOfBatches > 66,
ClearCollect(WAmasterCollectAll66,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 132000)
)
),
If(_numberOfBatches > 67,
ClearCollect(WAmasterCollectAll67,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 134000)
)
),
If(_numberOfBatches > 68,
ClearCollect(WAmasterCollectAll68,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 136000)
)
),
If(_numberOfBatches > 69,
ClearCollect(WAmasterCollectAll69,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 138000)
)
),
If(_numberOfBatches > 70,
ClearCollect(WAmasterCollectAll70,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 140000)
)
),
If(_numberOfBatches > 71,
ClearCollect(WAmasterCollectAll71,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 142000)
)
),
If(_numberOfBatches > 72,
ClearCollect(WAmasterCollectAll72,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 144000)
)
),
If(_numberOfBatches > 73,
ClearCollect(WAmasterCollectAll73,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 146000)
)
),
If(_numberOfBatches > 74,
ClearCollect(WAmasterCollectAll74,
Filter(SortByColumns('Wiki Catalog Master PLAY', "RowNumber", Ascending), RowNumber > 148000)
)
)
);
// End concurrent function
ClearCollect(_WAmasterCollectAll,
WAmasterCollectAll0,
WAmasterCollectAll1,
WAmasterCollectAll2,
WAmasterCollectAll3,
WAmasterCollectAll4,
WAmasterCollectAll5,
WAmasterCollectAll6,
WAmasterCollectAll7,
WAmasterCollectAll8,
WAmasterCollectAll9,
WAmasterCollectAll10,
WAmasterCollectAll11,
WAmasterCollectAll12,
WAmasterCollectAll13,
WAmasterCollectAll14,
WAmasterCollectAll15,
WAmasterCollectAll16,
WAmasterCollectAll17,
WAmasterCollectAll18,
WAmasterCollectAll19,
WAmasterCollectAll20,
WAmasterCollectAll21,
WAmasterCollectAll22,
WAmasterCollectAll23,
WAmasterCollectAll24,
WAmasterCollectAll25,
WAmasterCollectAll26,
WAmasterCollectAll27,
WAmasterCollectAll28,
WAmasterCollectAll29,
WAmasterCollectAll30,
WAmasterCollectAll31,
WAmasterCollectAll32,
WAmasterCollectAll33,
WAmasterCollectAll34,
WAmasterCollectAll35,
WAmasterCollectAll36,
WAmasterCollectAll37,
WAmasterCollectAll38,
WAmasterCollectAll39,
WAmasterCollectAll40,
WAmasterCollectAll41,
WAmasterCollectAll42,
WAmasterCollectAll43,
WAmasterCollectAll44,
WAmasterCollectAll45,
WAmasterCollectAll46,
WAmasterCollectAll47,
WAmasterCollectAll48,
WAmasterCollectAll49,
WAmasterCollectAll50,
WAmasterCollectAll51,
WAmasterCollectAll52,
WAmasterCollectAll53,
WAmasterCollectAll54,
WAmasterCollectAll55,
WAmasterCollectAll56,
WAmasterCollectAll57,
WAmasterCollectAll58,
WAmasterCollectAll59,
WAmasterCollectAll60,
WAmasterCollectAll61,
WAmasterCollectAll62,
WAmasterCollectAll63,
WAmasterCollectAll64,
WAmasterCollectAll65,
WAmasterCollectAll66,
WAmasterCollectAll67,
WAmasterCollectAll68,
WAmasterCollectAll69,
WAmasterCollectAll70,
WAmasterCollectAll71,
WAmasterCollectAll72,
WAmasterCollectAll73,
WAmasterCollectAll74
);
Clear(WAmasterCollectAll0);
Clear(WAmasterCollectAll1);
Clear(WAmasterCollectAll2);
Clear(WAmasterCollectAll3);
Clear(WAmasterCollectAll4);
Clear(WAmasterCollectAll5);
Clear(WAmasterCollectAll6);
Clear(WAmasterCollectAll7);
Clear(WAmasterCollectAll8);
Clear(WAmasterCollectAll9);
Clear(WAmasterCollectAll10);
Clear(WAmasterCollectAll11);
Clear(WAmasterCollectAll12);
Clear(WAmasterCollectAll13);
Clear(WAmasterCollectAll14);
Clear(WAmasterCollectAll15);
Clear(WAmasterCollectAll16);
Clear(WAmasterCollectAll17);
Clear(WAmasterCollectAll18);
Clear(WAmasterCollectAll19);
Clear(WAmasterCollectAll20);
Clear(WAmasterCollectAll21);
Clear(WAmasterCollectAll22);
Clear(WAmasterCollectAll23);
Clear(WAmasterCollectAll24);
Clear(WAmasterCollectAll25);
Clear(WAmasterCollectAll26);
Clear(WAmasterCollectAll27);
Clear(WAmasterCollectAll28);
Clear(WAmasterCollectAll29);
Clear(WAmasterCollectAll30);
Clear(WAmasterCollectAll31);
Clear(WAmasterCollectAll32);
Clear(WAmasterCollectAll33);
Clear(WAmasterCollectAll34);
Clear(WAmasterCollectAll35);
Clear(WAmasterCollectAll36);
Clear(WAmasterCollectAll37);
Clear(WAmasterCollectAll38);
Clear(WAmasterCollectAll39);
Clear(WAmasterCollectAll40);
Clear(WAmasterCollectAll41);
Clear(WAmasterCollectAll42);
Clear(WAmasterCollectAll43);
Clear(WAmasterCollectAll44);
Clear(WAmasterCollectAll45);
Clear(WAmasterCollectAll46);
Clear(WAmasterCollectAll47);
Clear(WAmasterCollectAll48);
Clear(WAmasterCollectAll49);
Clear(WAmasterCollectAll50);
Clear(WAmasterCollectAll51);
Clear(WAmasterCollectAll52);
Clear(WAmasterCollectAll53);
Clear(WAmasterCollectAll54);
Clear(WAmasterCollectAll55);
Clear(WAmasterCollectAll56);
Clear(WAmasterCollectAll57);
Clear(WAmasterCollectAll58);
Clear(WAmasterCollectAll59);
Clear(WAmasterCollectAll60);
Clear(WAmasterCollectAll61);
Clear(WAmasterCollectAll62);
Clear(WAmasterCollectAll63);
Clear(WAmasterCollectAll64);
Clear(WAmasterCollectAll65);
Clear(WAmasterCollectAll66);
Clear(WAmasterCollectAll67);
Clear(WAmasterCollectAll68);
Clear(WAmasterCollectAll69);
Clear(WAmasterCollectAll70);
Clear(WAmasterCollectAll71);
Clear(WAmasterCollectAll72);
Clear(WAmasterCollectAll73);
Clear(WAmasterCollectAll74);
//Collect compound code table to prevent delegation issues for compound list and mat compound table
ClearCollect(Mat_Compound_Collect, '999_sf_item_creation_compound_codes')Basically what is happening here is we have a master table with all of our inventory data in it and I have to put it into a collection b/c of delegation issues on other filter screens we have. So I'm making a ton of batches and then from those batches I put all of them into one big master collection, then I clear out the batches and don't worry about the last bit of code. also I had to move the master inventory table into sharepoint b/c running this formula against our sql server was killing its cpu. On that note, I wasn't sure if we could better configure our sql server to handle this concurrent function in this formula?
Can I ask why you need 150,000+ records in your PowerApp? That is excessive and will have massive load issues (as you've discovered) and also slow down your app.
Could you use SQL to build consolidated tables of the MASTER that you use inside your app instead eg
if you need to the total number of all available widgets, build a sql query that counts each and stores that value in a separate entity.
It may just take thinking about how you wish to use the data rather than finding a way to get access to all the data inside PowerApps because it's just not built for that.