没有BigQuery的大量数据的交集

问题描述 投票:0回答:1

我有一个表格(在Google BigQuery中),显示了人们访问过的网址。人们用10个字符的ID表示。

如果用户访问过一次网址,则表中将显示1行。大约有9000万独特的人(id)和约40万个独特的域。

我的目标是为每个域获取访问该域的唯一身份的人数。结果将显示在界面中用户可以选择一个域或不选择一个域,并查看所选人员的总数(即唯一ID的总和,访问了他选择的域)。

事实是,有些人可能访问了多个域。因此,总和将是错误的。我有一个版本,其中我只获取访问每个域的一个域的唯一ID的数量,然后在界面中将我添加到总数中当选择一个网站时,当我未选择域名时,我将从总数中删除。当然,这并不能解决问题的ID正在计数两次。

大量的域使得不可能仅计算每个可能的交集。另外,出于速度和成本的原因,我只想查询BigQuery一次。我觉得每次选择后不使用BigQuery就是没有真正的解决方案,有人可以告诉我是否错过了吗?

谢谢

google-bigquery bigdata intersection
1个回答
0
投票

我认为您正在ROLLUP中寻找GROUP BY功能:https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax#group-by-clause

示例:

WITH Sales AS (
  SELECT  1 AS day, 'abc' AS user UNION ALL
  SELECT  1, 'abc' UNION ALL
  SELECT  1, 'def' UNION ALL
  SELECT  2, 'abc' UNION ALL
  SELECT  3, 'abc' UNION ALL
  SELECT  3, 'def' UNION ALL
  SELECT  3, 'abc'
)
SELECT
  day,
  COUNT(distinct user) AS total
FROM Sales
GROUP BY ROLLUP(day);
© www.soinside.com 2019 - 2024. All rights reserved.