Hi Brian,

Thanks for your quick response. I totally agree that the we should not rely on 
any assumption on the field order and we can always specify the order of the 
flattened fields as we want. There is no blocker issue for me with the current 
behavior, but I am just wondering if may be convenient in some use cases if we 
can just keep the order (roughly) consistent with the order of the parent 
fields from the original schema.

From: Brian Hulette <bhule...@google.com>
Reply-To: "user@beam.apache.org" <user@beam.apache.org>
Date: Wednesday, January 20, 2021 at 9:42 AM
To: user <user@beam.apache.org>
Subject: Re: Regarding the field ordering after Select.Flattened transform

This does seem like an odd choice, I suspect this was just a matter of 
convenience of implementation since the javadoc makes no claims about field 
order.

In general schema transforms don't take care to maintain a particular field 
order and I'd recommend against relying on it. Instead fields should be 
addressed by name, either with Row.getValue(Sring), or by mapping to a user 
type. Is there a reason you want to rely on a particular field order? Maybe 
when writing to certain IOs field order could be important.

On Tue, Jan 19, 2021 at 1:36 PM Tao Li 
<t...@zillow.com<mailto:t...@zillow.com>> wrote:
Hi community,

I have been experimenting with Select.Flattened transform and noticed that the 
field order in the flattened schema is not consistent with the order of the top 
level fields from the original schema. For example, in the original schema, we 
have field “foo” as the first field and it has a nested field “bar”. After 
applying the flattening transform, the new field “foo.bar” becomes the last 
field in the flattened schema. Seems like the order of the new fields are not 
that deterministic in the flattened schema. Is this an expected behavior? Don’t 
we guarantee any ordering of the flattened fields (e.g. being consistent with 
the original order)? Thanks!

Reply via email to