【问题标题】:How to left join both custom dimensions and transactions如何离开加入自定义维度和交易
【发布时间】:2021-06-30 18:58:00
【问题描述】:

我留下了来自自定义维度(用户 ID 和商家)的连接值。我还想添加交易。我可以就如何将其添加到此查询中获得一些建议吗?还是我必须完全改变结构?这就是我尝试的方式,但我收到一个语法错误,说它需要 FROM 语句所在的结束输入。

merchants.merchant_Id,
otherMerchants.merchant_id AS otherMerchants,
merchants.market AS market,
COUNT (merchants.transactions) AS transactions,
COUNT(DISTINCT merchants.userId) users
FROM(

SELECT 
#här hämtar vi alla userIds och merchantIds
(SELECT VALUE FROM UNNEST(customDimensions) WHERE INDEX = 3) userid,
(SELECT VALUE FROM UNNEST(customDimensions) WHERE INDEX = 4) merchant_Id,
(SELECT VALUE FROM UNNEST (customDimensions) WHERE INDEX = 8) market,
hits.transaction.transactionId) as transactions

 FROM `qliro-66ee8.128389777.ga_sessions_20210628`
 UNNEST (hits) AS hits
) merchants

LEFT JOIN 

(
SELECT 
#här hämtar vi alla userIds och merchantIds igen för att kunna nyckla ihop det
(SELECT VALUE FROM UNNEST(customDimensions) WHERE INDEX = 3) userid,
(SELECT VALUE FROM UNNEST(customDimensions) WHERE INDEX = 4) merchant_id,
(SELECT VALUE FROM UNNEST (customDimensions) WHERE INDEX = 8) market,
hits.transaction.transactionId) as transactions

 FROM `qliro-66ee8.128389777.ga_sessions_20210628`
 UNNEST (hits) AS hits
) otherMerchants

#nycklar på att det är samma user samt inte samma merchant för att inte få dubbelräkning
#nycklar på att det är samma user samt inte samma merchant för att inte få dubbelräkning
ON merchants.userId = otherMerchants.userid
AND merchants.merchant_Id != otherMerchants.merchant_id
AND merchants.transactions = otherMerchants.transactions
AND merchants.market = otherMerchants.market

GROUP BY 1,2,3



【问题讨论】:

  • 您的意思是totals.transactions GA 功能吗?
  • 我用我尝试过的查询更新了帖子中的查询,但我使用了 hits.transactions 而不是 totals.transaction。不过可能是错的!
  • 还有更多问题:customDimensions 是会话级别的功能,还是hits.customDimensions
  • 真正相关的问题@MatteoFelici。它的会话范围!

标签: google-bigquery transactions left-join custom-dimensions


【解决方案1】:

我认为你非常接近!你应该这样做

SELECT
merchants.merchant_Id,
otherMerchants.merchant_id AS otherMerchants,
merchants.market AS market,
SUM(merchants.transactions) AS transactions,
COUNT(DISTINCT merchants.userId) users
FROM(

SELECT 
(SELECT VALUE FROM UNNEST(t1.customDimensions) WHERE INDEX = 3) userid,
(SELECT VALUE FROM UNNEST(t1.customDimensions) WHERE INDEX = 4) merchant_Id,
(SELECT VALUE FROM UNNEST (t1.customDimensions) WHERE INDEX = 8) market,
count(distinct hits.transaction.transactionId) as transactions

 FROM `qliro-66ee8.128389777.ga_sessions_20210628` t1,
 UNNEST (hits) AS hits
 GROUP BY 1,2,3
) merchants

LEFT JOIN 

(
SELECT 
#här hämtar vi alla userIds och merchantIds igen för att kunna nyckla ihop det
(SELECT VALUE FROM UNNEST(customDimensions) WHERE INDEX = 3) userid,
(SELECT VALUE FROM UNNEST(customDimensions) WHERE INDEX = 4) merchant_id,
(SELECT VALUE FROM UNNEST (customDimensions) WHERE INDEX = 8) market

 FROM `qliro-66ee8.128389777.ga_sessions_20210628`
) otherMerchants

ON merchants.userId = otherMerchants.userid
AND merchants.merchant_Id != otherMerchants.merchant_id
AND merchants.market = otherMerchants.market

GROUP BY 1,2,3

编辑:查询中缺少 GROUP BY 语句

【讨论】:

  • 啊!当然,您应该必须定义第一个自定义维度表,以免混淆。但是我收到一个语法错误,说“UNNEST 表达式引用 t1.customDimensions,它在 [10:27] 既没有分组也没有聚合,所以我在该查询中添加了一个 Group by。不知道这对我的结果有何影响
  • 看起来它并没有给出不同的结果——这意味着在聚合等方面没有奇怪的差异。你知道那个额外的 group by 做什么以及为什么需要它吗?就这样我从我所做的事情中学习,哈哈:D
  • 你说得对,我在第一个内部查询中缺少 GROUP BY。由于我使用的是 COUNT() 聚合,因此我必须为所有其他维度指定 GROUP BY(所以 userId, merchant_Id, market
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多