It seems like at the least we’d need to have one column per context per model for any breaking schema changes?
Not really sure what schema changes you have in mind, but generally adding a new column doesn’t require any transformations. If you want to change a type of course then it would require some sql transforms, though I find those much simpler to do in BigQuery than Redshift as the scaling is handled by Google under the hood.
For a single nested record you are charged for the data you select not the fields in the record/structure, documentation refers to this as “contained fields.”
I never looked into this too much as we don’t have that much data volume to impact the costs, but I was curious to look at some examples, see below:
In general I think the cost is always per column touches no matter if they are in nested or top level. For repeated fields is that it just flattens them out so you get more rows. If you really want to be aggressive about cost reduction using partitioned tables could help a lot if querying only recent data, like “WHERE _PARTITIONTIME = TIMESTAMP(“2017-06-01”) LIMIT 1000” that is something like a virtual table where all rows loaded on that day lives.