BigQuery错误 - UNIQUE_HEAP需要一个int32参数

时间:2017-04-02 08:37:38

标签: google-bigquery legacy-sql

使用旧版SQL,我尝试在Google BigQuery中使用COUNT(DISTINCT field, n)。但我得到以下错误:

  

UNIQUE_HEAP需要一个大于0的int32参数(错误代码:invalidQuery)

以下是我使用的查询:

SELECT
    hits.page.pagePath AS Page,
    COUNT(DISTINCT CONCAT(fullVisitorId, INTEGER(visitId)), 1e6) AS UniquePageviews,
    COUNT(DISTINCT fullVisitorId, 1e6) as Users
FROM
    [xxxxxxxx.ga_sessions_20170101]
GROUP BY
    Page
ORDER BY
    UniquePageviews DESC
LIMIT
    20

BigQuery甚至没有显示错误的行号,因此我不确定哪一行导致此错误。

  

可能导致上述错误的原因是什么?

1 个答案:

答案 0 :(得分:1)

请勿在{{1​​}}中使用1e6。相反,对第二个参数COUNT(DISTINCT)使用实际的INTEGER值(默认值为1000),或者使用'N'代替。

COUNT(DISTINCT) documentation

EXACT_COUNT_DISTINCT() documentation

  

如果您需要更高的COUNT(DISTINCT)准确度,您可以指定   第二个参数n,它给出低于精确度的阈值   结果有保证。默认情况下,n为1000,但如果给出一个   n越大,您将得到COUNT(DISTINCT)的精确结果   的价值但是,给出较大的n值会降低可伸缩性   该运算符可以大大增加查询执行时间   或导致查询失败。

     

要计算不同值的确切数量,请使用   EXACT_COUNT_DISTINCT。或者,对于更具可扩展性的方法,请考虑使用   在相关字段上分组EACH BY,然后应用COUNT(*)。该   GROUP EACH BY方法更具可扩展性,但可能会产生轻微影响   前期性能损失。