2017-05-11 63 views
1

我使用導入的GA數據計算頁面上的平均產品位置,目前我正在通過SKU對項目位置進行平均 - 是否有一種方法可以在我的查詢中將其計算爲加權平均值作爲一個產品可能會顯示在第1位10次,一次在第10位,我不想平均爲5。BigQuery中的加權平均值

這裏是我的查詢到目前爲止:

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) 

請注意,我使用的是BigQuery的Standard版本,因爲這是強烈推薦的。

如果您必須使用Legacy版本,那麼調整此查詢可能很容易(假設您不必使用FLATTEN操作)。

你說你要考慮一個特定網頁上的位置,這可以通過第一where子句中插入條件

and hits.page.pagepath = 'your page url' 
完成以及