ネストされたデータの概念は比較的新しいので、BigQuery(https://support.google.com/analytics/answer/3437719?hl=en)でいくつかのGAデータをフラット化するための正しい方法で頭を上げようとしています。BigQuery UNNESTいいえ結果
ここで、訪問者セッションごとに、私が見た製品SKUのリスト(詳細ビュー)をキャプチャしようとしています。トランザクションがあった場合はトランザクションIDです。
SELECT fullVisitorId as uId, visitId as vId, h.transaction.transactionId as
trId, STRING_AGG(p.productSKU, "|") as skus
FROM
`test-bigquery.12345678.ga_sessions_*` t
LEFT JOIN UNNEST(hits) h
LEFT JOIN UNNEST(h.product) p
WHERE
_TABLE_SUFFIX = '20170709'
AND h.eCommerceAction.action_type = '2'
GROUP BY uId, vId, trId
しかし、これはTRIDがnullでない場合、ゼロの結果を返すように表示されます。私の起算することにより、研究のビットを行った後、これを実行する最も簡単な方法は、LEFTはすべてを戻すためにJOINを使用して、次のようになります....
私は上記の2つのクエリと結合に分かれて行きました。これはうまくいくと思われ、trIdがnullでないような一見賢明な数の行(〜1000)を返します。誰かが2つが同じ答えを与えていない理由を説明し、うまくいけば、私は将来....おかげで、ネストされた楽しみのすべての方法で参加するために装備することができれば
WITH skus AS
(SELECT fullVisitorId as uId, visitId as vId, STRING_AGG(p.productSKU, "|") as skus
FROM
`test-bigquery.12345678.ga_sessions_*` t
LEFT JOIN UNNEST(hits) h
LEFT JOIN UNNEST(h.product) p
WHERE
_TABLE_SUFFIX = '20170709'
AND h.eCommerceAction.action_type = '2'
GROUP BY uId, vId),
transactions AS
(SELECT fullVisitorId as uId_trans, visitId as vId_trans, h.transaction.transactionId as trId
FROM
`test-bigquery.12345678.ga_sessions_*` t
LEFT JOIN UNNEST(hits) h
WHERE
_TABLE_SUFFIX = '20170709'
AND h.transaction.transactionId IS NOT NULL
GROUP BY uId_trans, vId_trans, trId)
SELECT skus.uId, skus.vId, transactions.trId, skus.skus
FROM skus
LEFT JOIN transactions ON transactions.vId_trans = skus.vId AND transactions.uId_trans = skus.uId
はそれは素晴らしいだろう!
幻想的で簡潔な答え、それを超えて私が仕事を滑らかにするために物を最適化する方法を示唆しています。 @ありがとう! – jptk