解决 BigQuery 中的“无法解析输入字符串”错误

Kar*_*ark 1 google-bigquery retention

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

在花了大量时间了解 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
Run Code Online (Sandbox Code Playgroud)

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

Mik*_*ant 5

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

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

PARSE_DATE('%x', events.event_date)
Run Code Online (Sandbox Code Playgroud)

应该

PARSE_DATE('%Y%m%d', events.event_date)
Run Code Online (Sandbox Code Playgroud)

此外,可选地,您可能希望更改LEFT JOINJOIN