The idea behind Query Folding is to push the logic that you built into a Power BI query back to the data source server and execute it there in it’s native language instead of doing a client side transform of the data. Why is this important? Let me give you an example. Say you have a 2 billion row SQL Server table you need to connect to in Power BI, but you want to filter to only return the last year of data. With Query Folding the filter of that data is done on the SQL Server side instead of on the client side. If Query folding did not take place than that would mean all 2 billion rows would be brought across the network only to then filtered out on the client workstation. So clearly the ideal situation is that all your queries get folded for the best possible performance, but Query Folding only works in certain scenarios.
I hadn’t heard the term “query folding” before, but the concept makes sense; in the PolyBase world, it’s “predicate pushdown.” Check out Devin’s post, as he shows how easy it is to see to what extent your query is running client-side versus server-side.