【问题标题】:How to count a feature x if y condition is true (bigquery)如果 y 条件为真,如何计算特征 x (bigquery)
【发布时间】:2018-12-05 08:41:03
【问题描述】:

我是机器学习的新手,我正在处理我的第一个机器学习问题。我自己做了很多研究,但找不到这个问题的解决方案。

我正在 Bigquery 中从我的数据集创建新变量。如果满足变量 (y) 中的条件,则其中一个变量包括对变量 (x) 的计数。我不能使用 WHERE 或 HAVING,因为条件仅与此特定变量的计算有关。

代码差不多是这样的:

COUNT(DISTINCT sessionid IF(date > “2018-06-01” && date < “2018-06-30”)) 
AS sessions_lastmonth

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

谢谢!

【问题讨论】:

    标签: sql r machine-learning google-bigquery


    【解决方案1】:

    你说你不能使用WHERE,所以我假设建议你使用WHERE的答案不会飞?

    我认为您可能需要改用 CASE,因此您的查询可能类似于:

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

    该语法可能不正确,但它可能会帮助您走上正确的轨道?

    【讨论】:

    • 嗨,理查德,这个也可以!太感谢了!很方便!
    【解决方案2】:

    BigQuery 标准 SQL 如下

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

    【讨论】:

    • 米哈伊尔,非常感谢!代码完美运行!顺便说一句,这段代码对于许多其他计算也非常方便!
    • 请注意COUNT(DISTINCT ...) 忽略空值。
    • 所以,这正是那里有 NULL 的原因 - 所以它不被计算在内:o)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-19
    相关资源
    最近更新 更多