使用旧版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甚至没有显示错误的行号,因此我不确定哪一行导致此错误。
可能导致上述错误的原因是什么?
答案 0 :(得分:1)
请勿在{{1}}中使用1e6
。相反,对第二个参数COUNT(DISTINCT)
使用实际的INTEGER值(默认值为1000),或者使用'N'
代替。
EXACT_COUNT_DISTINCT() documentation
如果您需要更高的COUNT(DISTINCT)准确度,您可以指定 第二个参数n,它给出低于精确度的阈值 结果有保证。默认情况下,n为1000,但如果给出一个 n越大,您将得到COUNT(DISTINCT)的精确结果 的价值但是,给出较大的n值会降低可伸缩性 该运算符可以大大增加查询执行时间 或导致查询失败。
要计算不同值的确切数量,请使用 EXACT_COUNT_DISTINCT。或者,对于更具可扩展性的方法,请考虑使用 在相关字段上分组EACH BY,然后应用COUNT(*)。该 GROUP EACH BY方法更具可扩展性,但可能会产生轻微影响 前期性能损失。