无法查询大于 100MB 限制的行

Meg*_*egh 5 google-bigquery

尝试在结构列中更新/插入(单个结构数组中的 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)

错误1 错误2

在这个问题上需要帮助。

小智 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 个较小的行,这将大大减少行的大小。