如果满足条件y,如何在BigQuery中计算特征x的数量

9
我是机器学习的新手,正在尝试解决我的第一个机器学习问题。我自己做了很多研究,但无法找到这个问题的解决方案。
我正在从Bigquery的数据集中创建新变量。其中一个变量是计算变量(x)是否满足变量(y)的条件。由于该条件仅与此特定变量的计算有关,因此无法使用WHERE或HAVING。
代码大致如下:
COUNT(DISTINCT sessionid IF(date >2018-06-01&& date <2018-06-30”)) 
AS sessions_lastmonth

我知道这段代码不正确,但它只是一种表达我需要的更或多或少的方式。目标是了解特定时期内的会话数。我不能使用日期计数,因为在一天内您可以拥有多个会话,并且并非每行都是单独的会话(一个会话可以有多行,因为用户可以在同一会话中浏览许多页面)。

谢谢!

2个回答

19

以下内容适用于BigQuery标准SQL

COUNT(DISTINCT IF(date >= '2018-06-01' AND date <= '2018-06-30', sessionid, NULL)) AS sessions_lastmonth

4
谢谢你,Mikhail!代码完美地运行了! 顺便说一句,这个代码对于许多其他的计算也非常方便! - Bruna Aranha
1
请注意,COUNT(DISTINCT ...) 忽略空值。 - ATOMP
所以,这正是将NULL放在那里的原因 - 这样它就不会被计算:o) - Mikhail Berlyant

3

你说你不能使用 WHERE,所以我假设提出让你使用 WHERE 的答案行不通?

我认为你可能需要使用 CASE,因此你的查询可能如下所示:

COUNT(DISTINCT CASE WHEN date >2018-06-01AND date <2018-06-30THEN sessionid ELSE NULL END) AS sessions_lastmonth

这个语法可能不正确,但它可能会帮助您找到正确的方向吗?


嗨 Richard,这个也可以工作!非常感谢你!相当方便! - Bruna Aranha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接