BigQuery PERCENT_RANK() returns 超出资源
PERCENT_RANK() in BigQuery returns Resources exceeded
当我尝试对大型数据集使用 PERCENT_RANK() 时,出现错误。
SELECT
a2_lngram,
a2_decade,
a2_totalfreq,
a2_totalbooks,
a2_freq, a2_bfreq,
a2_arf,
c_avgarf,
d_arf,
oi,
PERCENT_RANK() OVER (ORDER BY d_arf DESC) plarf
FROM [trigram.trigrams8]
目标 table 和 AllowLargeResults returns:
"Resources exceeded during query execution."
当我将结果限制在几百个时,它运行良好。
职位编号:otichyproject1:job_PpTpmMXYETUMiM_2scGgc997JVg
数据集是 public.
这是预期的:analytic/window 函数的输入需要适合一个节点才能成功 运行。
PERCENT_RANK() OVER (ORDER BY d_arf DESC) plarf
仅当所有行都适合一个节点时才会运行。如果他们不这样做,您将看到 "Resources exceeded during query execution" 错误。
有一种方法可以使用分析函数进行扩展:对数据进行分区。
PERCENT_RANK() OVER (PARTITION BY country ORDER BY d_arf DESC) plarf
... 那么该函数可以在多个节点上 运行,只要每个 'country' 行适合一个 VM。
虽然不是你的情况 - 我在这里做的修复是计算单独的子查询、连接和除法的总数。
总而言之,分析函数很酷,但它们在每个分区的大小上存在可扩展性问题 - 幸运的是还有其他方法可以获得相同的结果。
当我尝试对大型数据集使用 PERCENT_RANK() 时,出现错误。
SELECT
a2_lngram,
a2_decade,
a2_totalfreq,
a2_totalbooks,
a2_freq, a2_bfreq,
a2_arf,
c_avgarf,
d_arf,
oi,
PERCENT_RANK() OVER (ORDER BY d_arf DESC) plarf
FROM [trigram.trigrams8]
目标 table 和 AllowLargeResults returns:
"Resources exceeded during query execution."
当我将结果限制在几百个时,它运行良好。
职位编号:otichyproject1:job_PpTpmMXYETUMiM_2scGgc997JVg 数据集是 public.
这是预期的:analytic/window 函数的输入需要适合一个节点才能成功 运行。
PERCENT_RANK() OVER (ORDER BY d_arf DESC) plarf
仅当所有行都适合一个节点时才会运行。如果他们不这样做,您将看到 "Resources exceeded during query execution" 错误。
有一种方法可以使用分析函数进行扩展:对数据进行分区。
PERCENT_RANK() OVER (PARTITION BY country ORDER BY d_arf DESC) plarf
... 那么该函数可以在多个节点上 运行,只要每个 'country' 行适合一个 VM。
虽然不是你的情况 - 我在这里做的修复是计算单独的子查询、连接和除法的总数。
总而言之,分析函数很酷,但它们在每个分区的大小上存在可扩展性问题 - 幸运的是还有其他方法可以获得相同的结果。