Bigquery 中是否有使用标准 SQL 来实现 max_by 和 regr_slope 函数的等效函数。如果不是如何实现这一目标。
谢谢, 马尼亚尔
BigQuery 似乎并不支持开箱即用的这些功能。对于
MAX_BY
,您可以只使用 ROW_NUMBER
:
-- replacement for MAX_BY(col, val)
-- find the value for col which generates the MAX value
WITH cte AS (
SELECT col, ROW_NUMBER() OVER (ORDER BY val DESC) rn
FROM yourTable
)
SELECT col
FROM cte
WHERE rn = 1;
或者,如果您的 BigQuery 版本支持,您可以使用
LIMIT
:
SELECT col
FROM yourTable
ORDER BY val DESC
LIMIT 1;
至于在 BigQuery 中进行线性回归,我建议您参考 这个高度赞扬的 Stack Overflow 问答。
正如 @felipe-hoffa 在另一个问题中评论的那样,替换
MAX_BY
的最短方法似乎是使用 ARRAY_AGG
,如下所示:
SELECT
ARRAY_AGG(x ORDER BY y DESC LIMIT 1)[OFFSET(0)] AS max_x_by_y
FROM yadda_yadda
根据 BigQuery 文档,BigQuery 现在原生支持
MAX_BY
作为聚合函数。
至于在 BigQuery 中进行线性回归,我建议您参考 这个高度赞扬的 Stack Overflow 问题和答案,正如另一个答案中已经提到的那样。