代码之家  ›  专栏  ›  技术社区  ›  Simon Breton

添加到购物车产品的平均产品列表位置

  •  0
  • Simon Breton  · 技术社区  · 5 年前

    我想返回添加到购物车产品的平均产品列表位置。我在用谷歌商品商店。通用域名格式。其目的是计算产品的平均位置 Search Results 会话期间添加到购物车的每个产品的产品列表。

    到目前为止,我有以下疑问:

    SELECT
      visitId,
      prods.productSKU AS SKU,
      prods.v2ProductName AS Name,
      prods.productListName AS ProductList,
      AVG(prods.productListPosition) AS Average_Position
    FROM
      `bigquery-public-data.google_analytics_sample.ga_sessions_*`,
      UNNEST(hits) hits,
      UNNEST(hits.product) prods
    WHERE
      (_TABLE_SUFFIX BETWEEN '20170601'
        AND '20170731') and prods.productListName = "Search Results"
    GROUP BY
      visitId,
      SKU,
      Name,
      ProductList
    ORDER BY
      Average_Position ASC
    

    这个查询会返回产品的平均位置 搜索结果 所有产品的产品列表。所以我需要找到一种方法来过滤掉没有添加到购物车中的产品。

    0 回复  |  直到 5 年前
        1
  •  0
  •   Willian Fuks    5 年前

    无法测试,但这可能会帮助您:

    SELECT
      sku,
      name,
      (SELECT AVG(position) FROM UNNEST(positions) AS position) AS avg_position
    FROM(
      SELECT
        ARRAY(SELECT AS STRUCT
          productSKU AS sku,
          v2ProductName AS name,
          ARRAY_AGG(IF(productListName='Search Results', productListPosition, NULL) IGNORE NULLS) AS positions,
          MAX(IF(ecommerceAction.action_type='3', TRUE, NULL)) AS is_carted
        FROM UNNEST(hits) LEFT JOIN UNNEST(product)
        GROUP BY sku, name) AS hits
      FROM
        `bigquery-public-data.google_analytics_sample.ga_sessions_*`
      WHERE
        (_TABLE_SUFFIX BETWEEN '20170601' AND '20170631')
        AND EXISTS(SELECT 1 FROM UNNEST(hits), UNNEST(product) WHERE productListName = 'Search Results')
        AND EXISTS(SELECT 1 FROM UNNEST(hits) WHERE ecommerceaction.action_type = '3')
    ), UNNEST(hits)
    WHERE is_carted
      AND ARRAY_LENGTH(positions) > 0