rriley99 - please download the attached ZIP file, decompress it, and import the example pipeline. I'm using the sl.range built-in function to generate an array that contains the offsets to be used to get my total number of records based on the count returned in the first snap. Then I simply split the array and call the Select snap to read the paginated results from the source table.
There is at least one solution I can think of that doesn't require the initial record count; however, I recommend the approach provided since a record count from a database is typically not costly, especially with a 1M record table - if we were talking 100's of millions or billions of records, then a different approach is probably worth pursuing.
Hope this helps!