ウェブサイトへのすべての訪問者の合計timeOnSiteを計算します(生データに秒単位で格納されているので3600で除算します)。それをcontent_groupと、content_levelというカスタム変数で分割します。Unnest and totals.timeOnSite(BigQueryとGoogle Analyticsのデータ)
content_groupとcontent_levelの両方が配列内にネストされているため、timeOnSiteはインクルードとネストしていないクエリで使用された場合に膨らんだtotals.-stored変数です。 (content_groupは通常のヒット・ネストされた変数ですが、content_levelはヒット(2番目のレベルのネストされた変数)でネストされたcustomDimensionsにネストされます (WillとThomas Cはこの問題がなぜこの問題で出現するのかをよく説明しますが、 )totals.timeOnSiteメトリックに彼らのアドバイスを適用し
#StandardSQL
SELECT
date,
content_group,
content_level,
SUM(sessions) AS sessions,
SUM(sessions2) AS sessions2,
SUM(time_on_site) AS time_on_site
FROM (
SELECT
date AS date,
hits.contentGroup.contentGroup1 AS content_group,
(SELECT MAX(IF(index=51, value, NULL)) FROM UNNEST(hits.customDimensions)) AS content_level,
SUM(totals.visits) AS sessions,
COUNT(DISTINCT CONCAT(cast(visitId AS STRING), fullVisitorId)) AS sessions2,
SUM(totals.timeOnSite)/3600 AS time_on_site
FROM `projectname.123456789.ga_sessions_20170101`,
unnest(hits) AS hits
GROUP BY
iso_date, content_group, content_level
ORDER BY
iso_date, content_group, content_level
)
GROUP BY iso_date, content_group, content_level
ORDER BY iso_date, content_group, content_level
(私はUNION_ALLを使用して複数のテーブルからデータを引っ張って計画していますので、私はサブクエリを使用しますが、私はそれは関係がないと認めので、私はその構文を省略質問)
質問:
*両方のヒットに対して「ローカルな不干渉」を行うことは可能ですか?とhits.customDimensionsので、それが膨らませないで私のクエリでtotals.timeOnSiteを使用することは可能でしょうか?
*セッションとセッション2で作成したように、サイトの滞在時間を回避することは可能ですか?
*この問題の第3の隠れた解決策はありますか?
このクエリの出力は、私が複製しようとしているGAのレポートと一致しませんでした。クエリーのセッションはGAと比べてGAとSUM(time_on_site)のほうが3倍大きくなりました(SUM時間をAVG時間よりも評価する方が簡単ですが、AVG時間がより有用です!)明日はもう一度やります。私がいるところでは遅れているし、まっすぐ考えることもないだろう。 –
GAレポートに適用されたフィルタがこのクエリで適用されたフィルタと同じであることを確認できますか?上記のクエリではエラーが見つかりませんでした。 –
もう一度試して、同じ不一致を得ました。フィルタもチェックし、内部トラフィックとスパムドメインのみをフィルタリングします(afora.ru、akuhni.byなど)。私がカスタムディメンションを使わずにクエリを実行したとき(すなわち、ネストされていない場合)、合計が正しいことがわかったので、フィルタが干渉するのはちょっと奇妙だと感じました(しかし、私はまだ初心者です。 ) –