BigQuery 查询事件 Table

BigQuery Querying Events Table

Objective : 计算 event_name= 'Wallet'

的用户数

问题 :我已将查询结果限制为 100 以进行检查,因此预期结果必须为 100 但是当我使用 count(params.value.string_value) 时它显示 124 。

代码 : SELECT count(params.value.string_value) FROM "myproj.analytics_197163127.events_20190528",UNNEST(event_params) as params where event_name ='Wallet' and params.key = 'UserId' limit 100

预期结果:如果查询返回 100 条记录,则计数应为 100,但如何显示 124?

希望问题清楚

查询显示 100 条记录,因为最后限制为 100:

SELECT event_date,event_timestamp,event_name, params.value.string_value 
FROM myproj.analytics_197163127.events_20190528, UNNEST(event_params) as params 
where event_name ='Wallet' and params.key = 'UserId' 
limit 100

删除它并再次检查。

LIMIT 100 指定要从 SQL 语句中 return 编辑的行数。它不会影响查询中的 COUNT() 。所以两者之间存在差异:

select count(*) from table limit 100 

这将 return 具有 table 中行数的单个值。另一方面:

select count(*) from (select * from table limit 100) 

这将 return 100(如果 table 超过 100 行 - 否则它将 return table 中的行数)

limit 应用于查询产生的结果集。

您的查询是没有 group by 的聚合查询。这样聚合总是returns一行。因此,limit 不会影响结果。

如果要查看结果集的 100,请使用 CTE 或子查询:

SELECT count(params.value.string_value)
FROM (SELECT params
      FROM "myproj.analytics_197163127.events_20190528" e CROSS JOIN
           UNNEST(e.event_params) params 
      WHERE e.event_name ='Wallet' AND params.key = 'UserId' 
      LIMIT 100
     ) ep