2017-05-11 49 views
1

インポートしたG​​Aデータを使用してページ上の平均商品ポジションを計算していますが、現在SKUのアイテムポジションを平均化しています。これはクエリ内の加重平均として計算する方法です製品は、1位で10回を表示することができ、かつ一度位置10で、私は平均が5BigQueryの加重平均

なるのは嫌だとして、ここでは私のクエリは、これまでのところです:

SELECT hits.product.productSKU AS SKU, AVG(hits.product.productListPosition) AS Average_Position 
FROM (TABLE_DATE_RANGE([***.ga_sessions_], TIMESTAMP('2016-04-24'), TIMESTAMP('2016-04-30'))) 
GROUP BY SKU 
ORDER BY Average_Position ASC 

答えて

1

私はこれをテストそれはここで働いた:

SELECT 
    sku, 
    nom/den avg_position from(
    SELECT 
    sku, 
    SUM(position * freq) nom, 
    SUM(freq) den from(
    SELECT 
     prods.productsku sku, 
     prods.productlistposition position, 
     COUNT(prods.productlistposition) freq 
    FROM 
     `project_id.dataset_id.ga_sessions_*`, 
     UNNEST(hits) AS hits, 
     UNNEST(hits.product) prods 
    WHERE 
     1 = 1 
     AND PARSE_TIMESTAMP('%Y%m%d', REGEXP_EXTRACT(_table_suffix, r'.*_(.*)')) BETWEEN TIMESTAMP('2016-04-24') AND TIMESTAMP('2016-04-30') 
     AND prods.productlistposition > 0 
    GROUP BY 
     sku, 
     position) 
    GROUP BY 
    sku) 

StandardバージョンのBigQueryを使用しましたが、これはこれを強くお勧めします。

レガシーバージョンを使用する必要がある場合は、このクエリを簡単に設定できます(FLATTEN操作を使用する必要がない場合)。

あなたが特定のページ上の位置を検討したい、これが最初のwhere句で条件

and hits.page.pagepath = 'your page url' 
を挿入することにより、同様に行うことができると述べました