0

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

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 甚至没有显示错误的行号,因此我不确定是哪一行导致了这个错误。

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

4

1 回答 1

1

不要1e6在你的COUNT(DISTINCT). 相反,为第二个参数使用一个实际的 INTEGER 值'N'(默认为 1000),或者使用EXACT_COUNT_DISTINCT()

COUNT(DISTINCT) 文档

EXACT_COUNT_DISTINCT() 文档

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

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

于 2017-04-02T09:21:59.420 回答