gpt4 book ai didi

sql - 了解是什么导致GBQ中的“资源超出”错误?

转载 作者:行者123 更新时间:2023-12-03 17:11:22 25 4
gpt4 key购买 nike

我正在使用Google Analytics(分析)数据上的BigQuery。在开发查询的各个阶段,我得到错误:“资源超出”。我想进一步了解正在发生的事情。我已经成功解决了这个问题,但是只能通过反复试验来解决。

当我使用解释工具时,它似乎是看起来超出资源的任何查询或子查询的“计算”部分。

这是一个标准SQL查询的示例,该查询根据是否保留某些部分而成功/失败:

  SELECT
fullVisitorId,
visitId,
h.type AS type,
h.hitNumber AS hitNumber,
h.eventInfo.eventAction AS action,
LOWER(h.eventInfo.eventCategory) AS category,
h.page.pagePath AS page,
h.page.pageTitle AS landingTitle,
h.page.searchKeyword AS searchTerm,
LEAD(h.page.pagePath) OVER (PARTITION BY fullVisitorId, visitId ORDER BY h.hitNumber ASC) AS landingPage,
SPLIT(h.eventInfo.eventLabel, ':')[OFFSET(0)] AS clickTitle,
CASE WHEN LEAD(h.page.pageTitle) OVER (PARTITION BY fullVisitorId, visitId ORDER BY h.hitNumber ASC) = SPLIT(h.eventInfo.eventLabel, ':')[OFFSET(0)] THEN true ELSE false END AS searchClick
FROM `project.dataset.ga_sessions_*` AS main, UNNEST(hits) AS h
WHERE _TABLE_SUFFIX BETWEEN '20170401' AND '20170430'
AND (
(
h.eventInfo.eventAction = 'click' AND LOWER(h.eventInfo.eventCategory) LIKE '/search%'
)
OR type = 'PAGE'
)
ORDER BY
fullVisitorId ASC, visitId ASC, h.hitNumber ASC


当删除这些元素集中的任何一个时,查询将运行:

ORDER BY
fullVisitorId ASC, visitId ASC, h.hitNumber ASC


要么:

LEAD(h.page.pagePath) OVER (PARTITION BY fullVisitorId, visitId ORDER BY h.hitNumber ASC) AS landingPage,
SPLIT(h.eventInfo.eventLabel, ':')[OFFSET(0)] AS clickTitle,
CASE WHEN LEAD(h.page.pageTitle) OVER (PARTITION BY fullVisitorId, visitId ORDER BY h.hitNumber ASC) = SPLIT(h.eventInfo.eventLabel, ':')[OFFSET(0)] THEN true ELSE false END AS searchClick


要么:

在单个日期分区上运行时,将运行整个查询。

我将当前的理解水平描述为肤浅,对GBQ的内部运作以及它如何分配/允许计算资源一无所知。我确实知道它会在可能的情况下在单独的计算机上执行计算。我以前听说过这些碎片。

我需要了解有关GBQ计算资源的哪些信息,以了解以上内容为何起作用/不起作用?

N.B:我只有一级访问权限,但这并不意味着如果我能证明需要的话就无法获得更多访问权限。显然,我不希望以当前的理解水平进行操作。

最佳答案

我认为应该在查询中引起问题的唯一原因是ORDER BY操作。如您在Jordan的answer中所见,此操作不可并行化。您也可以检查docs,以了解导致“超出资源”错误的原因。

查询的其余部分似乎很好。我根据我们的数据测试了您的查询,它在20秒钟内处理了将近300Gb:

enter image description here

如果仍然出现错误,则可能是您查询了大量的数据。在这种情况下,您可以尝试将查询分为更小的日期范围,查询较少的列,添加一些WHERE条件以过滤掉某些行,更改层级等等。

关于sql - 了解是什么导致GBQ中的“资源超出”错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44586673/

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