我想访问experimentId和experimentVariant以及来自Google Analytics的其他参与数据。
尝试时
SELECT
fullVisitorId,
visitNumber,
totals.pageviews,
hits.page.pagePath,
hits.experiment.experimentId,
hits.experiment.experimentVariant
FROM `xy_20170809`, UNNEST(hits) as hits
WHERE
hits.type = “PAGE”
ORDER BY
fullVisitorId ASC, visitNumber ASC
发生以下错误
无法访问具有类型的值的字段experimentId ARRAY< STRUCT< experimentId STRING,experimentVariant STRING>>在
似乎没有点击hits.experiment ARRAY无法按预期工作,因此无法点击hits.page ARRAY正常工作。 我发现的唯一区别是hits.experiment是一个重复的数组,而hits.page是可以为空的。
如何访问experimentId和experimentVariant?
答案 0 :(得分:2)
由于给定的fullvisitorID
可能是不同测试/变体的一部分,因此字段experiment
会像hits
字段一样重复。
这意味着您还必须unnest
:
SELECT
fullVisitorId,
visitNumber,
totals.pageviews,
hits.page.pagePath,
e.experimentId,
e.experimentVariant
FROM `xy_20170809`,
UNNEST(hits) as hits,
UNNEST(hits.experiment) AS e
WHERE
hits.type = “PAGE”
ORDER BY
fullVisitorId ASC, visitNumber ASC
我通常倾向于尽可能地避免击中击中场上的排除(因此大部分都有良好的性能和嵌套结果)。你可以做到这一点的一种方法是运行类似:
SELECT
fullvisitorid fv,
ARRAY(SELECT AS STRUCT experimentID, experimentVariant FROM UNNEST(hits), UNNEST(experiment))
FROM `xy_20170809`
LIMIT 1000
但你必须分析它是否适合你。然而,如果有必要,它是您在BigQuery中使用的另一种技术。
[编辑]:
以下是仅选择具有某些变体的用户的查询:
SELECT
fullvisitorid fv,
ARRAY(SELECT AS STRUCT experimentID, experimentVariant FROM UNNEST(hits), UNNEST(experiment))
FROM `xy_20170809`
WHERE ARRAY_LENGTH(ARRAY(SELECT AS STRUCT experimentID, experimentVariant FROM UNNEST(hits), UNNEST(experiment))) > 0
LIMIT 1000