So, I am having the same issue and I just found your post and read it with hope. Although it has been helpful my issue is a little different just a tiny bit.
What I am doing is mergint two tables I am creating with M inside the advance query for one of my tables. In this operation I create two tables by doing a left anti join, that works fine.
I have table A that are all new leases.
I have table B with all terminated leases.
I want a single table C with both, so I need two columns, new lease, terminated lease. All this is fine so far.
I do then a nested join which is a left outer from the new leases to the terminated leases, so im keeping all that is new and just putting a false in those that are not.
The moment i merge is ok, but then when i expand the table is when booom, i get duplicates. The problem i just found is that while im using lease_id as my key to join, there are some that do not have that key because they are not leases, they are owned so it is a different number, and coincidentally those are the duplicated ones.
I've been working with a sales table and trying to create dimension tables from the table with all of the fields. I've been frustrated, because I could not tell where the duplicate rows of data were coming from; however, could tell they happened after one of the two merge query steps.
I can affirm that having a unique index prior to the merge, and then removing duplicates from this field works.