尝试在结构列中更新/插入(单个结构数组中的 500k 行)记录。它会引发屏幕截图中显示的以下错误。下面是查询
insert into test_dataset.hierarchy
select create_date_time,update_date_time,name,
ARRAY_AGG(struct( id,dba_name, dba_address1, dba_address2, dba_city, dba_state, dba_country, dba_postal_code, dba_fax_number, dba_primary_phone_number, dba_secondary_phone_number, dba_email,
[struct( attribute_name, attribute_value)] as attribute_array)) as m_array
from test_dataset.temp
group by 1,2,3;
Run Code Online (Sandbox Code Playgroud)
在这个问题上需要帮助。
小智 4
要使用 array_agg,每行有 100mb 的限制。在分组依据期间,按 1、2、3 分组的一行或多行超出了此限制。
这通常发生在空值或一些通常不期望的大组上。另外,请记住,添加的列越多,线条就越粗。
解决这个问题的一种方法是将你的小组分成更小的小组。假设您有 1.create_date_time 5 个不同的寄存器,2.update_date_time 10 个不同的寄存器,3.name 3000 万个不同的寄存器。
考虑平均分配: Group by 1(每行 600 万个名称) Group by 2(每行 300 万个名称) Group by 3(每行 1 个名称)
您可以对更多列使用 group by,将一条大行分成 4-5 个较小的行,这将大大减少行的大小。