问题标签 [hyperloglog]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - hyperlog-android 并非所有日志都发送到服务器。如何解决这个问题?
我正在像这样在我的基本应用程序中初始化超级日志
谁能告诉我我在这里做错了什么?
google-cloud-dataflow - 无法从 ApacheBeam sql 调用“ApproximateDistinct.ApproximateDistinctFn”
尝试使用ApproximateDistinct.ApproximateDistinctFn
apache beam sql 中的聚合函数,但失败了。
我的 SQL:
我在 Apache-Beam 中调用此查询的代码:
这引发了这个异常:
python - 不同计数算法
我想知道是否可以通过以下方式进行近似的不同计数:
- 我有一个这样的聚合:
- 我想知道我是否可以获得以下信息:
换句话说,如果不传递所有值(有太多而且我没有足够的内存来处理它),是否可以为每个特定于区域的行项目传递某种散列(或其他东西),以近似当在多个项目之间相加时,近似的不同计数是多少?或者这是不可能的。
请注意,我不是在寻找 sql 方法,我只是想看看它是否可以传递某种对象/哈希/等。返回每个订单项,然后在多个订单项中建立一个近似的唯一计数。
google-cloud-platform - Google BigQuery 的 HLL+ 精度
这里描述了使用HLL.INIT(...)
和的精度HLL.MERGE(...)
:
https://cloud.google.com/bigquery/docs/reference/standard-sql/hll_functions
但是,我想知道是否存在基数大小,在该点下 HLL 保证是准确的。例如,如果我有 10 个不同的值,并且我在各个区域将它们“合并”在一起,那么每次都会 100% 准确,还是会受到 HLL 错误范围的影响?换句话说,每个 HLL 级别是否有保证的上限Precision
,在该上限下可以保证 100% 的准确度?如果是这样,如何确定每个精度级别?
sql - 可以在 BigQuery 之外进行数据透视吗?
假设我正在寻找构建以下数据透视表:
为此,我可以像这样进行基本聚合:
并得到如下结果:
然后我可以在 BigQuery/SQL 之外“构建结果”(例如在 javascript 甚至 pandas 中)以获得旋转结果。
但是,当这些值不能简单地“加起来”或以某种直接的方式计算时,我会遇到麻烦。例如:
有没有办法在 BigQuery 中获取一个值,以便我们可以在 BigQuery 之外进行此计算?我已经在此处发布了一个先前的问题,您似乎无法使用HLL_COUNT
,因为它在外部不可用。[或者是否有其他类型的算法可以用于构建某种可以在 SQL 之外合并的独特草图?]。
或者是否有另一种方法来构建我缺少的数据透视结果(BigQuery 之外)?
更新:上面的例子更多地给出了这个问题的概述。实际的数据透视查询是这样的:在 X 轴和 Y 轴上获取顶级专利国家、BQ 公共数据集中的代码。
hyperloglog - 基于 HyperLogLog 的使用分析是否符合 GDPR?
背景:我们的服务有遥测系统,想跟踪留存率、有多少用户使用各种功能等。
有两种选择可以处理用户身份信息并符合 GDPR:
- 支持根据请求删除用户信息
- 将数据保留少于 30 天
选项 #1 难以实施(对于遥测系统)。选项 #2 不允许回答诸如“什么是功能 X 的 6 个月保留期?”之类的问题。
如何获得上述问题的答案的一个想法是每周/每天计算每个功能的 HyperLogLog blob,并将它们永远分开存储。这将允许基于这些 blob 继续合并/dcount/计算保留。
假设任何用户可识别信息在 30 天后消失(在用户帐户被删除后),HyperLogLog blob 是否仍允许跟踪用户(即回答特定用户是否在两年前使用功能 X)?
如果它允许,那么它是不合规的(如果它不允许,并不意味着它是合规的)。
redis - 如何使 Redis 中的 HyperLogLog 过期?
HyperLogLog占用 12KB 的空间。我在文档中看不到有关何时释放该存储空间的任何内容。
我目前的计划是EXPIRE
每次打电话都打电话PFADD
,但我找不到太多关于过期 HLL 的讨论,所以我想知道我是否做错了......
我计划使用 HLL 实时计算我网站上的活跃访问者数量。我只想保留过去一小时的计数,释放比这更早的任何东西。
count - BigQuery 到 Data Studio :无论所选时间段如何,都显示可靠的 COUNT DISTINCT
在我的 BigQuery 项目中,我存储从 Firebase 集成的事件数据。粒度和维度使得尝试在 Data Studio 中快速呈现原始数据会使报告变得非常缓慢(每页/交互 1-2 分钟)。
然后我开始思考如何在 BigQuery 中创建预聚合表以加快一切速度,但很快意识到 COUNT DISTINCT 指标将是这种方法的问题。让我解释:
以上是网站访问量表。
显然,创建一个预聚合表,如
有一个限制,即计数不能进一步聚合(甚至更少,动态地)以获得总数,因为执行 SUM 将返回 8 个不正确的唯一用户,只有 3 个唯一用户。
在 BigQuery 中,这是通过使用 HLL_COUNT 来解决的,尽管近似值对我来说还可以。
现在到了一个大问题:
如何做同样的事情以使结果可以在 Data Studio 中显示????
HLL_COUNT.EXTRACT 不能作为其中的函数使用,在报告中我总是要记住,日期范围是由用户设置的,但是他喜欢,所以不可能为 ALL存储预先汇总的结果案例...
编辑 1:APPROX_COUNT_DISTINCT
根据 Bobbylank 的回答,我尝试使用 APPROX_COUNT_DISTINCT。但是,我发现这似乎只是将问题移到了底线。我的错没有解释那里有什么。尽管性能可以接受,但我似乎无法将数据源与此计算指标混合。
示例:在显示所选期间的唯一用户数量(现在有效)之后,我还尝试像 Firebase 一样在 Data Studio 中显示平均每用户收入 (ARPU)。
为此,我必须SUM(REVENUE) / APPROX_COUNT_DISTINCT(USER)
显然,REVENUE 可以与预聚合一起使用,并且可以在原始数据中使用。然后我尝试将原始数据与仅包含用户访问的表混合。但是 APPROX_COUNT_DISTINCT 不能在混合数据定义中使用,因为不允许计算指标。
即使尝试将 USER 字段用作具有 Count Distinct 聚合的指标,尽管在分别显示收入和用户计数时返回正确的数字,但当我尝试将它们划分时,问题变成了聚合(将 SUM 或 AVG 应用于该字段,基本上是结果将是每天的 AVG(REVENUE/USERS))。
然后我还尝试将 REVENUE 直接存储在访问表中,但 Data Studio 提醒我无法创建计算指标,我无法在计算字段中混合维度和指标。