Since data feeds report trades on the Time & Sales with the filled resting orders rather than the trade initiator (since 2009) a number of companies have sprung up over the years to reconstruct the trades back together. Rightly so none claim to do it 100% correctly as it is impossible to do so, but my belief is they do a pretty good job, having read the tape for a number of years.
I've personally used a number of them when I used Ninjatrader as my platform, (vendors such as Jigsaw, Discotrading, Advanced Time & Sales as a separate platform altogether) and when putting them side by side they are almost identical in the way they report the trade initiator inferring it is probable they are using similar logic.
Does anyone know the logic behind how they do this? I have read on a number of threads on Futures.io and also Elite Trader that reconstruction algorithms sometimes use time, level1/2 sweep events, sometimes both, to match the trades back together. I have no idea of the terminology behind it but I'm hoping someone might be able to shed some light on this.
The splitting started in 2009. But I think this is all moot after the CME changed they way they reported trades back (although not everyone followed).
In terms of it not being 100% possible - it is possible to know 100% of the time if the CME split the trade reporting when one market order hits many limit orders.
Can't shed any light on how it's done but when I did it (being the 1st and all ;-)) - it involved a few calls to the friendly people at the CME to figure it out.