You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BigQuery中多重UNNEST hits自定义维度提取国家与拆分标签的实现问题

实现方案

你可以通过两次UNNEST搭配条件聚合的方式完成需求,具体逻辑和代码如下:

核心思路

  • 先展开hits层级的customDimensions数组,分别提取index=1的国家值、index=4的标签字符串,聚合到同一行的对应字段
  • 再对标签字符串按|分割后做二次展开,最终得到每行对应单个标签的结果

示例SQL

WITH extract_dim AS (
  -- 第一步:提取同一条记录下的国家和标签字符串
  SELECT
    date,
    -- 提取index=1对应的国家值
    MAX(IF(cd.index = 1, cd.value, NULL)) AS Country,
    -- 提取index=4对应的|分隔标签字符串
    MAX(IF(cd.index = 4, cd.value, NULL)) AS label_str
  FROM
    `你的项目名.你的数据集名.你的表名`,
    UNNEST(hits) AS h,
    UNNEST(h.customDimensions) AS cd
  GROUP BY
    date
  -- 如果有会话/命中级别的唯一标识(比如fullVisitorId、visitId、hitId)建议也加入GROUP BY,避免数据合并错误
)
-- 第二步:拆分标签字符串并展开得到单行单标签结果
SELECT
  date,
  Country,
  label
FROM
  extract_dim,
  UNNEST(SPLIT(label_str, '|')) AS label
WHERE
  -- 过滤掉没有国家或者没有标签的无效记录
  Country IS NOT NULL
  AND label_str IS NOT NULL
  AND label != ''

注意事项

  • 如果你的表中同一条date对应多条独立的命中记录,需要把对应的唯一标识字段(如fullVisitorId、visitId、hitId等)加入第一步的GROUP BY逻辑,避免多条记录的自定义维度被错误合并
  • 标签拆分后如果存在空值可以根据业务需求调整WHERE条件的过滤规则

内容的提问来源于stack exchange,提问作者mrf8

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 23:06:04