google-bigquery - 解决 BigQuery 中的 "Failed to parse input string"错误

标签 google-bigquery retention

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

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

USERS_VIEW 模式

enter image description here

EVENT_VIEW 模式

enter image description here

查询和抛出的错误

当我执行以下连接这两个 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

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

最佳答案

I get the error "Failed to parse input string "20161111""

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

PARSE_DATE('%x', events.event_date)

应该是

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

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

关于google-bigquery - 解决 BigQuery 中的 "Failed to parse input string"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42035651/

相关文章:

mysql - 表值作为 SQL 函数的输入

java - @Retention Java 类型检查器注解

logging - 有没有办法删除逻辑应用运行历史记录/日志?

sql - BigQuery - 在 BigQuery 中选择多个产品范围的自定义维度

google-bigquery - Google BigQuery 中所有保存的个人查询都消失了

sql - 在 BigQuery 中使用 LEAD

message-queue - 如何测试日志压缩在 Kafka 中是否有效?

android - 在 Android 中发送通知时感到困惑

google-bigquery - 将数据流式传输到特定的BigQuery时间分区