2017-08-31 50 views
0

我想訪問experimentId和experimentVariant以及來自Google分析的其他參與數據。訪問experimentId和實驗變量with bigquery

當試圖

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 >>

這似乎是安慰的命中。實驗ARRAY不工作如預期的K,unnesting the hits.page ARRAY工作正常。 我發現的唯一區別是hits.experiment是一個重複的數組,而hits.page是可以爲空的。

任何想法如何訪問experimentId和experimentVariant?

回答

1

由於給定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 

我通常傾向於避免在命中場unnestings儘可能的(所以有大部分良好的性能和嵌套結果)。你可以這樣做的一種方式是運行類似於:

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 
+0

非常感謝。查詢現在無錯誤地運行。不幸的是,當添加「unnest(hits.experiment)作爲e」行時,大查詢返回零記錄。 將e.experimenId,e.experimentVariant選擇項目和「unnest(hits.experiment)作爲e」outquot,bigquery返回數據。 你對這個問題有什麼想法嗎? – Fabian

+0

這可能是因爲子句'where hits.type ='PAGE''而發生的。實驗發生時,G.A將其保存爲「EVENT」類型而不是「PAGE」。也許刪除它會帶來預期的數據。 –

+0

感謝您的信息。 只是試了一下,它仍然返回零記錄。 似乎第二次UNNEST聲明以某種方式清除輸出!? – Fabian