gpt4 book ai didi

google-bigquery - Google BigQuery 要求 JOIN EACH 但我已经在使用它

转载 作者:行者123 更新时间:2023-12-04 14:11:56 29 4
gpt4 key购买 nike

我正在尝试在 BigQuery 中运行一个查询,它有两个子选择和一个连接,但我无法让它工作。我正在做的一种解决方法是自己运行子选择,然后将它们保存为表,然后使用连接进行另一个查询,但我认为我应该能够通过一个查询来做到这一点。

我收到错误:
Table too large for JOIN. Consider using JOIN EACH. For more details, please see https://developers.google.com/bigquery/docs/query-reference#joins
但我已经在使用 join 每个了。我试过使用交叉连接和使用 group by each 但这些给了我不同的错误。 Stack Overflow 上关于这个主题的其他问题没有帮助,一个说这是 BigQuery 中的一个错误,另一个是有人使用“cross join each”......

下面是我的 sql,如果它充满错误,请原谅我,但我认为它应该可以工作:

select
t1.device_uuid,
t1.session_uuid,
t1.nth,
t1.Diamonds_Launch,
t2.Diamonds_Close
from (
select
device_uuid,
session_uuid,
nth,
sum(cast([project_id].[table_id].attributes.Value as integer)) as Diamonds_Launch
from [project_id].[table_id]
where name = 'App Launch'
and attributes.Name = 'Inventory - Diamonds'
group by device_uuid, session_uuid, nth
) as t1
join each (
select
device_uuid,
session_uuid,
nth,
sum(cast([project_id].[table_id].attributes.Value as integer)) as Diamonds_Close
from [project_id].[table_id]
where name = 'App Close'
and attributes.Name = 'Inventory - Diamonds'
group by device_uuid, session_uuid, nth
) as t2
on t1.device_uuid = t2.device_uuid
and t1.session_uuid = t2.session_uuid

最佳答案

你有一个 GROUP BY里面JOIN EACH . GROUP BY达到基数限制(不同值的数量)并且最终分组不可并行化。这限制了 BigQuery 进行联接的能力。

如果您更改 GROUP BYGROUP EACH BY ,这很可能会奏效。

(是的,我意识到这令人不快且不标准。BigQuery 团队目前正在努力使这样的事情“正常工作”。)

关于google-bigquery - Google BigQuery 要求 JOIN EACH 但我已经在使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28704044/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com