【问题标题】:Resolving "Failed to parse input string" error in BigQuery解决 BigQuery 中的“无法解析输入字符串”错误
【发布时间】:2017-02-04 01:51:14
【问题描述】:

我正在进行同类群组分析,计算每周注册的用户数量,然后计算每个用户在随后几周内执行的事件数量。 (相当标准的东西!)

在花费大量时间了解 BigQuery 嵌套和数组数据后,我决定创建两个视图,以在整个数据集(每天生成的事件表)上使用通配符来展平嵌套的 user_dim 和 event_dim 列。这就是我最终得出这些观点的方式,我的查询正是基于这些观点:

USERS_VIEW 架构

EVENT_VIEW 架构

查询和抛出的错误

当我执行以下查询加入这两个视图时,我收到错误“无法解析输入字符串“20161111””:

    SELECT
    DATE_TRUNC(users.first_seen_date, WEEK) AS week,
    COUNT(DISTINCT users.uid) AS signed_up_users,
    COUNT(DISTINCT events.uid) AS logged_in_users,
    CASE
       WHEN COUNT(DISTINCT users.uid) > 0 THEN COUNT(DISTINCT events.uid) * 100 / COUNT(DISTINCT users.uid)
       ELSE 0
   END AS retention_pct
   FROM
      USERS_VIEW AS users
   LEFT JOIN
     EVENTS_VIEW AS events
    ON
      users.uid = events.uid
      AND PARSE_DATE('%x', events.event_date) >= DATE_ADD(users.first_seen_date, INTERVAL 1 WEEK)
      AND PARSE_DATE('%x', events.event_date) < DATE_ADD(users.first_seen_date, INTERVAL 2 WEEK)
     GROUP BY
      1
     ORDER BY
      1

我觉得这应该很简单,但我无法弄清楚我缺少什么格式来确保可以解析日期。 (并且用户界面没有告诉我哪个行号是违规者。)我希望这是一个其他人可以看到的愚蠢的错字。提前感谢您的帮助!

【问题讨论】:

    标签: google-bigquery retention


    【解决方案1】:

    我收到错误“无法解析输入字符串“20161111””

    我认为下面将有助于解决该错误

    PARSE_DATE('%x', events.event_date)
    

    应该是

    PARSE_DATE('%Y%m%d', events.event_date)
    

    此外,您也可以选择将 LEFT JOIN 更改为 JOIN

    【讨论】:

    • 太棒了!我知道这很简单/愚蠢。非常感谢,@Mikhail Berlyant。
    猜你喜欢
    • 2021-02-06
    • 2021-09-19
    • 2013-05-10
    • 2021-06-05
    • 2020-11-17
    • 2016-05-25
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    相关资源
    最近更新 更多