Generally, we store resultsets in pages in our caches and provide only requested pages to UI apps.
But, we have to download the whole resultset to our caches to be able to sort/pivot on our side. Streaming 50M rows through BigQuery REST API may be very slow, causing the SQL execution to timeout.
It is possible to add a TOP(x) filter and display TOP(x) rows quickly - we push down such filters to data sources.