首页 > 解决方案 > BigQuery 中 Google Analytics 用户 ID 自上次会话以来的天数?

问题描述

我需要获取自上次用户会话以来的天数,这些天数由用户 ID 标识。

注意:有类似的问题(此处此处),但没有明确的答案。

我们将userid作为自定义维度发送,索引为 2。

我收到此错误:

Cannot access field value on a value with type ARRAY<STRUCT<index INT64, value STRING>> at [2:22]

询问:

SELECT
    customDimensions.value,
    TIMESTAMP_SECONDS(MAX(visitStartTime)) AS LastSesion,
    CURRENT_TIMESTAMP() AS toDay,
    TIMESTAMP_DIFF(CURRENT_TIMESTAMP(),TIMESTAMP_SECONDS(MAX(visitStartTime)), DAY) AS daysSinceLastSession
FROM
  `ga-360-tvgo.76246634.ga_sessions_*`
GROUP BY
  1

截屏:

在此处输入图像描述

标签: google-analyticsgoogle-bigquery

解决方案


您不能按数组分组。您需要从数组中选择一个值或以某种方式聚合它 - 您可以使用unnest()在数组上运行 SQL,例如:

SELECT
    (SELECT value FROM UNNEST(customDimensions) WHERE index=2) AS userId,
    TIMESTAMP_SECONDS(MAX(visitStartTime)) AS LastSesion,
    CURRENT_TIMESTAMP() AS toDay,
    TIMESTAMP_DIFF(CURRENT_TIMESTAMP(),TIMESTAMP_SECONDS(MAX(visitStartTime)), DAY) AS daysSinceLastSession
FROM
  `ga-360-tvgo.76246634.ga_sessions_*`
GROUP BY
  1

推荐阅读