Audience Splitting: Precision vs Throughput
NTILE() and _CustomObjectKey modulo solve different problems.
Evidence tier describes my hands-on relationship with the content. Official sources describe platform contracts/documentation. Production observations should not automatically be treated as official limits.
Use NTILE() when you need balanced random buckets. Use _CustomObjectKey modulo when you need a very cheap, approximately even split on large standard Data Extensions and exact balance is not required.
Persist cohorts when experiment membership must remain stable.
NTILE + NEWID recalculates randomness every run.
Modulo is fast but approximate.
Do not silently switch methods when statistical balance matters.
Balanced random split
NTILE distributes ordered rows across N buckets. Ordering by NEWID() randomizes membership before the distribution.
SELECT SubscriberKey, NTILE(4) OVER (ORDER BY NEWID()) AS Bucket FROM [Eligible_Audience]
Performance-oriented approximate split
Salesforce documents using the hidden _CustomObjectKey modulo N for efficient segmentation of standard Data Extensions.
SELECT SubscriberKey FROM [Eligible_Audience] WHERE _CustomObjectKey % 4 = 0
The modulo approach is approximate and depends on the distribution of _CustomObjectKey values.