Conditional Split in ADF Data Flow issue - no rows in sink

Ulrike Pick 0 Reputation points
2025-06-26T14:28:01.3266667+00:00

I have a Conditional Split transformation that works fine except one sink results empty although there are source rows matching the split condition.

In my scenario I have - say - 4 conditions, two of which are supposed to end up in the same table sink. Except, one doesn't, and the matching rows don't even show up in the "leftover" bucket.

Any hints would be greatly appreciated.

I suspect that the order of processing might be relevant, leading to the question of how to define the processing order.

Thanks in advance!

Azure Data Factory
Azure Data Factory
An Azure service for ingesting, preparing, and transforming data at scale.
11,624 questions
0 comments No comments
{count} votes

1 answer

Sort by: Most helpful
  1. Venkat Reddy Navari 2,975 Reputation points Microsoft External Staff Moderator
    2025-06-26T16:10:20.9766667+00:00

    Hi @Ulrike Pick Conditional Splits in ADF can produce unexpected results when multiple output paths converge on a single sink.
    Conditional Split Is Top-Down: ADF processes Conditional Split rules in order, from top to bottom. As soon as a row matches a condition, it gets routed to that stream and is not evaluated against the rest. So, if two of your conditions point to the same sink and one is broader or comes first, it could be intercepting rows meant for the other.

    Troubleshooting Steps

    1. Review Condition Order Carefully: Even small overlaps can cause a higher condition to intercept rows meant for a lower one. Try moving more specific or narrow rules to the top of the list.
    2. Use Debug Mode + Data Preview: Enable debug mode and preview the data output from each branch of the split. This gives you visibility into where rows are actually going — or not going.
    3. Add a “Catch-All” Rule: Add a final condition with just true as the rule. This captures anything that didn’t match the others and helps identify whether rows are falling through entirely.
    4. Check Data Types and Comparisons: String comparisons may fail due to whitespace, casing, or implicit type mismatches (e.g. string vs. int). Watch out for those subtle issues — they’re easy to overlook.
    5. When Multiple Conditions Should Share a Sink: Instead of sending both directly to the same sink, route them to separate outputs first, then use a Union transformation to merge them before the sink. This gives you clearer diagnostics and better control.

    Hope this helps. If this answers your query, do click Accept Answer and Yes for was this answer helpful. And, if you have any further query do let us know.


Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.