如何使用自定义维度作为唯一标识符连接 BigQuery 中的表
Posted
技术标签:
【中文标题】如何使用自定义维度作为唯一标识符连接 BigQuery 中的表【英文标题】:How to Join Tables in BigQuery Using a Custom Dimension as a Unique Identifier 【发布时间】:2018-10-24 13:11:28 【问题描述】:我想将我的 Google Analytics 表与 Google BigQuery 中的另一个表连接起来,但我想使用自定义维度作为我的唯一标识符。以下是我到目前为止的查询,但它不喜欢我使用自定义维度 #3 作为唯一标识符的语法。这是我收到的错误消息:
**无法在 [6:26] 访问类型为 ARRAY> 的值上的字段索引**
有什么想法可以让我完成这项工作吗?
SELECT
*
FROM
`wehco-bi.64884663.ga_sessions_20180928` AS GA, UNNEST(hits) AS hits
<br/>LEFT JOIN `wehco-bi.BlueConic.ao` AS BC
<br/>ON GA.customDimensions.index.3 = BC.bc_profile_id
<br/>LIMIT 100
【问题讨论】:
为什么你的查询中有 标签?? 【参考方案1】:我不建议加入整个 ga_sessions 表。仅选择您需要的列(更高效且更便宜),然后才能使用您需要的自定义维度将它们从阵列中取出。最简单的方法是创建子查询。
with base as (
SELECT
DATE,
(SELECT value FROM UNNEST(hits.customDimensions) WHERE index=1 LIMIT 1) AS hit_level_cd1,
(SELECT value FROM UNNEST(t.customDimensions) WHERE index=3 LIMIT 1) session_level_cd3
FROM `wehco-bi.64884663.ga_sessions_20180928` AS t, UNNEST(hits) AS hits
)
SELECT DATE, hit_level_cd1,session_level_cd3
FROM base AS GA
LEFT JOIN
`wehco-bi.BlueConic.ao` AS BC
ON GA.session_level_cd2 = BC.bc_profile_id
LIMIT 100
首先我创建了一个临时基表,其中我取消了自定义维度的嵌套(我为会话和命中级别都做了显示差异),然后我使用其中一个将它们加入到新表中,就像你尝试做的那样。
【讨论】:
【参考方案2】:如果你想使用数组,我建议从这里开始https://cloud.google.com/bigquery/docs/reference/standard-sql/arrays#accessing-array-elements
您要尝试做的事情必须使用像这样的不同语法来完成
GA.customDimensions[OFFSET(2)]
它将访问数组中的第三个元素。
【讨论】:
以上是关于如何使用自定义维度作为唯一标识符连接 BigQuery 中的表的主要内容,如果未能解决你的问题,请参考以下文章
如何获取应用了多个维度的自定义 Firebase 事件的唯一用户数?