2017-11-23 5 views
0

BigQueryのGAデータでクエリを実行していますが、ネストされていないテーブルからデータの合計を返すときに、私のトータルが予想よりもはるかに高いところ - 不必要な行がカウントされていると思われ、不正確なカウントが発生します。ここでの例です:ネストされていないデータ(BigQueryのGoogleアナリティクスデータ)から正確な総計を返す方法

SELECT DATE, SUM(totals.transactions) 
FROM `PROJECTNAME.43786551.ga_sessions_20*` AS GBP 
    WHERE parse_date('%y%m%d', _table_suffix) between 
    DATE_sub(current_date(), interval 1 day) and 
    DATE_sub(current_date(), interval 1 day) 
    GROUP BY DATE 

戻り値:

予想通りです。次に、私は私のクエリを作り、ヒットをネスト解除するために私を必要とする、hits.からフィールドを使用したい:

SELECT DATE, SUM(totals.transactions), MIN(hits.page.hostname) AS site 
FROM `PROJECTNAME.43786551.ga_sessions_20*` AS GBP 
CROSS JOIN UNNEST (hits) as hits 
    WHERE parse_date('%y%m%d', _table_suffix) between 
    DATE_sub(current_date(), interval 1 day) and 
    DATE_sub(current_date(), interval 1 day) 
    GROUP BY DATE 

しかし、このため結果は今示しています

20171122 2320004 www.hostnameを。 com

トランザクションの数がはるかに多いです、私はすべての不必要な行を数えていると思います。この問題を回避するにはどうしたらいいですか?

答えて

0

あなたはおそらくこのような何か行う必要があります。私は[2時54分] `でグループ化されていないにも集計もされていないエラー` UNNEST表現の参照列ヒットを取得しています

SELECT DATE, SUM(totals.transactions), 
     (SELECT MIN(hit.page.hostname) FROM UNNEST (GBP.hits) AS hit) AS site 
     FROM `PROJECTNAME.43786551.ga_sessions_20*` AS GBP 
     WHERE parse_date('%y%m%d', _table_suffix) between 
     DATE_sub(current_date(), interval 1 day) and 
     DATE_sub(current_date(), interval 1 day) 
     GROUP BY DATE, site 
+0

を - それはそれは見ているかのように思えますフィールドとして不必要? –

+0

申し訳ありませんが、私はサイトごとにグループ化するのを忘れました。同様の問題が発生しました:https://stackoverflow.com/questions/40792981/unnest-expression-references-column-which-is-neither-grouped-nor-aggregated –

+0

優秀、ありがとうございました! –

関連する問題