Creating union to use in flatten collection

Could anybody please help me with the following goal: I wish to create an union collection with the purpose to use it in a flatten collection.

‘’ = ^ ^ ^ .‘Losses’[ ^ ^ ^ .‘Losses’* ] is the part that does not work. Do I need to create a reference set of losses? How can I achieve this?

Thank you in advance!

'Sales Orders': collection ['Sales Order'] = union (
    '' = ^ ^ ^ <'Consuming Orders'[ ^ ^ ^ ^ ^ .'Orders'* ]
) @hidden {
    'Sales Order': text -> downstream ^ ^ ^ ^ ^ ^ .'Orders'[] = key

    'Lines': collection ['Line'] = union (
        '' = ^ ^ ^ ^ <'Consuming Orders'[ >'Sales Order'.'Order Lines'* ]
    ) @small {
        'Line': text -> ^ >'Sales Order'.'Order Lines'[] = key

        'Purchases': collection ['Purchase'] = union (
            '' = ^ ^ ^ ^ ^ <'Consuming Orders'[ >'Line'.'Purchases'* ]
        ) @small {
            'Purchase': text -> ^ >'Line'.'Purchases'[] = key
            'Date': number 'date' = >'Purchase'.'Loading Date'
            'Quantity Reserved': number 'colli' = >'Purchase'.'Quantity Reserved'
        }
    }
}

'Losses': collection ['id'] = union (
    '' = ^ ^ ^ .'Losses'[ ^ ^ ^ .'Losses'* ]
) {
    'id': text -> ^ ^ ^ ^ .'Losses'[] = key
    'Date': number 'date' = >'id'.'Date'
    'Quantity Reserved': number 'colli' = >'id'.'Quantity Reserved'
}

'Consuming Orders': collection ['Order Line'] = flatten (
    'Sales' = .'Sales Orders'* .'Lines'* .'Purchases'* as $ (
        'Date' = $ .'Date'
        'Quantity Reserved' = $ .'Quantity Reserved'
    )
    'Losses' = .'Losses'* as $ (
        'Date' = $ .'Date'
        'Quantity Reserved' = $ .'Quantity Reserved'
    )
) join : @small { ... }

If you really only want to copy the collection, a union is not required and it can be written as:

'Losses': collection ['id'] {
	'id': text
}
'test': group {
	'Losses 1': collection ['id'] = ^ .'Losses'* {
		'id': text -> ^ ^ .'Losses'[] = key
	}
}

However if you’re not doing anything else, then you could also use the ‘Losses’ collection directly in your flatten expression:

'Losses': collection ['id'] {
	'id': text
}
'test': group {
	'Flat': collection ['id'] = flatten (
		'Losses' = ^ .'Losses'* ( )
	) join : {
		'id': text = key
	}
}
1 Like