Bigquery-批量运行ARRAY_AGG(STRUCT())以避免超过资源限制



我正试图使用ARRAY_AGG(STRUCT(((方法在Bigquery中创建一些嵌套字段,但在这样做的同时我超出了资源限制。有没有办法将查询分解为批处理来解决这个问题?

示例查询

选择cust_ id,ARRAY_AGG(结构(状态_日期、状态_日期,状态_描述、当前状态_标志、活动_滞后、价格、付款_需求、产品_组()作为状态FROM表1按客户id 分组

我需要STRUCT中的所有这些字段,但试图同时为所有数据这样做是行不通的。有没有办法做到以下任何一项?如果是,哪种方法最好?

a( 创建多个结构,然后用一个通用名称将它们连接起来?E.g运行以下脚本,创建结构"status1"one_answers"status2"。。。选择cust_ id,ARRAY_AGG(STRUCT(状态_日期,状态_日期、状态_描述、当前状态_标志、活动_滞后()作为状态1,ARRAY_AGG(结构(状态日期、状态日期、价格、付款需求、产品组()作为状态2,FROM表1按客户id 分组

然后将status_date和status_e_date上的两个结构连接起来,创建一个名为"status"的结构

b( 在status_date上对原始表进行分区,然后在分区字段上分批运行ARRAY_AGG(STRUCT(步骤。

c( 最后,我想放入结构中的一些字段是字符串字段,我知道它们在嵌套时会占用更多的资源。我可以嵌套它们的数值等价物,然后对查找表应用联接以获得它们的纯英文值吗?

我对这个过程很陌生,所以我很感激上面的一些可能没有意义。感谢您的帮助。

问候

我的更新,如果有人能确认,我将不胜感激。

我最初的未嵌套表包含一个"ORDER BY"命令,我认为这会导致在随后的嵌套过程中增加资源需求。我已经删除了"ORDER BY"(我不确定它为什么会在那里(,ARRAY_AGG(STRUCT(((进程现在运行良好。

查询ORDERED表是否更耗费资源?

最新更新