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 会话?