Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 查询执行期间超出了资源_Sql_Google Bigquery - Fatal编程技术网

Sql 查询执行期间超出了资源

Sql 查询执行期间超出了资源,sql,google-bigquery,Sql,Google Bigquery,我试图运行一个连接两个大数据集的查询,但在查询执行错误期间遇到了超出的资源。我已经读到使用Join Each和Group Each时有一些变通方法,但这些变通方法不是什么 SELECT year(users.firstseen) as first_year, month(users.firstseen) as first_month, DATEDIFF(orders.timestamp,users.firstseen) as days_elapsed, count(order

我试图运行一个连接两个大数据集的查询,但在查询执行错误期间遇到了超出的资源。我已经读到使用Join Each和Group Each时有一些变通方法,但这些变通方法不是什么

SELECT 
  year(users.firstseen) as first_year,
  month(users.firstseen) as first_month, 
  DATEDIFF(orders.timestamp,users.firstseen) as days_elapsed,
  count(orders.user_key) as count_orders
FROM 
  [project.orders] as orders
JOIN EACH
  [project.users] AS users
ON
  orders.user_key = users.user_key
WHERE orders.store = 'ios'
GROUP EACH BY 1,2,3
编辑:以下工作已完成:

SELECT
  year(users.firstseen) as firstyear,
  month(users.firstseen) as firstmonth,
  DATEDIFF(orders.timestamp, users.firstseen) as days_elapsed,
  COUNT(users.firstseen) AS count_orders FROM [project.orders] as orders
JOIN EACH( SELECT user_key, firstseen FROM [project.users]
WHERE store_key = 'ios') as users ON orders.user_key = users.user_key
GROUP BY firstyear, firstmonth, days_elapsed
ORDER BY firstyear, firstmonth, days_elapsed

如果您的连接密钥(在本例中为用户密钥)分布不均,则每个连接都可能失败。例如,如果有一个用户密钥经常出现异常,则处理该密钥的节点将出现“资源已超出”错误。或者,您可以通过在加入之前过滤掉部分用户密钥,尝试在一组较小的用户密钥上运行查询

如果有太多不同的组密钥,则“分组依据”可能会失败。您可以尝试通过添加更多的WHERE子句来减少join输出,以查看是否存在这种情况

基本上,我建议在查询开始工作之前,减少对JOIN-EACH或GROUP-BY的输入,这样您就可以更好地了解所遇到的限制。一旦您知道了这一点,您就可以(希望)构造查询以最大限度地利用可用资源


(顺便说一句,我们希望在不久的将来对这些操作进行调优,以消除您可能遇到的一些限制!)

最终将选择年(users.firstseen)作为第一年,月(users.firstseen)作为第一个月,DATEDIFF(orders.timestamp,users.firstseen)作为过去的天数,计数(users.firstseen)作为从[project.orders]当订单加入时(选择用户密钥,首先从[project.users]中看到,其中存储密钥='ios')由于orders.user_key=users.user_key GROUP BY firstyear、firstmonth、days_Passed orders BY firstyear、firstmonth、days_elapsedIt上的用户看起来有一个联接,每个联接产生0个匹配项也会触发此错误(在联接左侧200万个,右侧1.8亿个上测试)。每个具有零匹配项的联接本身不太可能是罪魁祸首。更有可能的是,在每个联接之前或之后的查询中有其他子句超出了给定工作节点的可用资源。如果将作业ID发送到jcondit@google.com,我可以仔细看一看。@JeremyCondit你有合同的最新情况吗aints?正在进行中!GROUP BY已经更新,在动态划分数据方面可能比GROUP BY做得更好。我们仍在解决JOIN的一些问题,但它也将很快更新。您好,我的order BY查询也失败
SELECT*FROM[kaggle\u bank\u raw.cleaned\u train]ncodpers订购
您能看一下吗?谢谢!