gpt4 book ai didi

google-bigquery - 在范围内进行连接时 Bigquery 是否很慢?

转载 作者:行者123 更新时间:2023-12-01 12:24:50 25 4
gpt4 key购买 nike

我有一个表 researchers,大小约为 200K 行,另一个表 requests 约为 50K 行。我发出以下请求。

SELECT a._id, a.createdAt, b.time, b.researcherId FROM
datasci.requests as a
JOIN analytics.researchers as b on
ABS(TIMESTAMP_DIFF(a.createdAt, b.time , MINUTE)) < 15

我假设这将在大约几分钟内完成 - 在排序后合并 2 个列表。但该请求在 Bigquery 中花费了 > 1 小时,并且尚未完成。我重试了几次,结果相同。这个查询需要重写吗?

一种选择是通过添加额外的 ON 条件来“帮助”BQ,例如 周(a.createdAt)==周(b.time)这会有所帮助还是只会使情况变得更糟?

最佳答案

好的。回答我自己的问题。因此,根据经验,它有助于在不平等条件的同时添加平等条件(速度快几个数量级)。但是,在我的具体情况下,我添加了以下条件

ON (DATE_SUB(DATE(a.createdAt),INTERVAL 1 DAY)  = DATE(b.time)) OR (DATE_ADD(DATE(a.createdAt),INTERVAL 1 DAY)  = DATE(b.time))  OR (DATE(a.createdAt  = DATE(b.time)) AND ABS(TIMESTAMP_DIFF(a.createdAt, b.time , MINUTE)) < 15

那花了太多时间。因此,我将其拆分为 3 个独立的查询并将它们联合起来,这有效

ON (DATE_SUB(DATE(a.createdAt),INTERVAL 1 DAY)  = DATE(b.time)) AND ABS(TIMESTAMP_DIFF(a.createdAt, b.time , MINUTE)) < 15

ON (DATE_ADD(DATE(a.createdAt),INTERVAL 1 DAY) = DATE(b.time)) AND ABS(TIMESTAMP_DIFF(a.createdAt, b.time , MINUTE)) < 15

ON (DATE(a.createdAt = DATE(b.time)) AND ABS(TIMESTAMP_DIFF(a.createdAt, b.time , MINUTE)) < 15

这只花了几秒钟。

关于google-bigquery - 在范围内进行连接时 Bigquery 是否很慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41041856/

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