-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Description
I commented that setting the types on array query parameters needs to be recursive since the array could contain structs. Note that arrays cannot contain arrays (the workaround is to contain a struct which can then contain an array).
It's not clear how one would do this with the current ArrayQueryParameter constructor.
bigquery.ArrayQueryParameter(
name='myarray',
type='STRUCT', # Note: this isn't enough information to construct the type object.
values=? # What would go here? Dictionaries? That doesn't match other uses of StructQueryParameter.
)
Maybe we need to change how array query parameters are constructed? Maybe it should look more like the StructQueryParameter constructor?
bigquery.ArrayQueryParameter(name, *sub_params)
It'd be a pain for scalar values and the names would have to be ignored on the sub_params if provided, but it's more flexible.
An aside
I'd actually love if we could get rid of all the XQueryParameter classes and use lists, dicts, and ints, floats, etc. But I see that it might be ambiguous for some types especially DATETIME (no time zone) vs TIMESTAMP (stored as UTC time).