BigQuery 和 GA:一些电子商务指标(例如产品收入)未正确分配给产品列表名称

Posted

技术标签:

【中文标题】BigQuery 和 GA:一些电子商务指标(例如产品收入)未正确分配给产品列表名称【英文标题】:BigQuery and GA: Some ecom metrics like product revenue not assigned correctly to product list name 【发布时间】:2019-02-01 13:13:57 【问题描述】:

正如 Google Analytics(分析)用户界面中所示,我想通过如下所示的查询来获取每个产品列表的产品收入。但是,所有产品收入都分配给“(未设置)”,而在 UI 中则分配给产品列表。

此外,在 BQ 中,似乎只有产品列表印象和产品列表点击(BQ 字段 hits.eCommerceAction.action_type)分配给产品列表。产品详细信息视图、结帐和唯一购买似乎也没有分配到产品列表中,而在 GA UI 中则有。我猜与产品收入相同的问题。

有人知道如何得到想要的结果吗?

SELECT
  prod.productListName AS ProdListName,
  SUM(prod.productRevenue)/1000000 AS PrRev
FROM
  `[project id].[dataset id].ga_sessions_*` AS t, t.hits AS hits, hits.product AS prod
WHERE
  _TABLE_SUFFIX BETWEEN '20181103'
  AND '20181103'
GROUP BY
  ProdListName
ORDER BY PrRev DESC

【问题讨论】:

【参考方案1】:

hits.product.productListName 字段仅为产品列表视图和产品列表点击操作设置。 您可以通过这种方式获得每个产品列表的收入:

#standardSQL
select
l.productListName as listName,
ROUND(SUM(p.productRevenue), 2) as productRevenue
from
(select
  concat (fullVisitorId, ".", cast(visitId as string), ".", cast(visitStartTIme as string), ".", cast(totals.visits as string)) as sessionId,
  h.hitNumber as hitNumber,
  p.v2ProductName as productName,
  p.productRevenue/1000000 as productRevenue
from
  `bigquery-public-data.google_analytics_sample.ga_sessions_20170801`, unnest(hits) h, unnest(h.product) as p
  where h.eCommerceAction.action_type ='6')p
 join 
/* (select
  concat (fullVisitorId, ".", cast(visitId as string), ".", cast(visitStartTIme as string), ".", cast(totals.visits as string)) as sessionId,
  p.v2ProductName as productName,
  p.productListName as productListName,
  MAX(h.hitNumber) as hitNumber_
from
  `bigquery-public-data.google_analytics_sample.ga_sessions_20170801`, unnest(hits) h, unnest(h.product) as p
  where h.eCommerceAction.action_type = '1'
  group by 1,2,3
  order by 1 )l */
(select
    sessionId,
    productName,
    productListName,
    hitNumber_
    from(
        select
        sessionId,
        productName,
        productListName,
        hitNumber_,
        row_number() over (partition by sessionId, productName order by hitNumber_ desc) as rn
        from
            (select
              concat (fullVisitorId, ".", cast(visitId as string), ".", cast(visitStartTIme as string), ".", cast(totals.visits as string)) as sessionId,
              p.v2ProductName as productName,
              p.productListName as productListName,
              h.hitNumber as hitNumber_
            from
              `bigquery-public-data.google_analytics_sample.ga_sessions_20170801`, unnest(hits) h, unnest(h.product) as p
              where h.eCommerceAction.action_type = '1'))
              where rn = 1
)l
  on
  p.sessionId = l.sessionId
  and p.productName = l.productName
  where p.hitNumber > l.hitNumber_
  group by listName
  ORDER BY 2 DESC

【讨论】:

感谢 Pavlo,现在产品收入归功于列表。但不得不说,GA界面和BQ结果还是有(比较小的)差异,造成这种差异的因素如下:如果在同一个会话中,同一个产品在不同的列表中被点击,在GA UI 产品收入仅归因于这些列表中的一个(即与最后一个交互的列表),而在上面的查询中,该会话中该产品的总产品收入归因于所有这些列表。你知道如何解决这个问题吗? Timo,我更新了第二个子查询以提供更准确的数据。查询的旧部分在 /* */ 中。不过,与 GA UI 可能存在一小部分差异,因为如果在同一会话期间产品点击发生在同一产品购买之后,则此点击不是最终聚合的一部分,因为点击命中数大于购买命中数。在这种情况下,您可以尝试删除“where p.hitNumber > l.hitNumber_”语句并检查更接近 GA UI 的输出。 再次感谢帕夫洛。与 GA UI 的区别仍然存在,但我想最后一个查询更准确一些。我会用这个!太糟糕了,谷歌在 BQ 中没有为此提供更容易和 100% 匹配的 UI 解决方案。我也错过了谷歌关于如何将产品收入分配到 UI 中的产品列表的确切定义,以便修复我们现在仍然看到的 UI 和 BQ 之间的差异。

以上是关于BigQuery 和 GA:一些电子商务指标(例如产品收入)未正确分配给产品列表名称的主要内容,如果未能解决你的问题,请参考以下文章

在 GA360 Bigquery 数据中,用户访问如何分解为 GA360 会话?

BigQuery 中处理日内 GA 数据的最佳方式

ga:itemQuantity in ga_sessions_YYYMMDD(大查询)

bigquery中的GA4流量源数据不正确

您可以将会话质量得分导出到 BigQuery 吗?

按页面标题显示的 GA bigquery 页面浏览量