create or replace function map_merge_patch(a,b) as ( with keys_t as ( select (map_keys(a) + map_keys(b)).list_distinct() as keys ), values_t as ( select list_transform(keys, key -> coalesce(b[key][1],a[key][1])) as values from keys_t) select MAP(keys, values) from keys_t, values_t ); select map_merge_patch( MAP([1,2],[1,2]), MAP([1,3],[10,30])) as add;