将旧版 SQL 转换为标准 SQL - 增强型电子商务

Posted

技术标签:

【中文标题】将旧版 SQL 转换为标准 SQL - 增强型电子商务【英文标题】:Converting Legacy SQL to Standard SQL - Enhannced Ecommerce 【发布时间】:2019-08-28 01:43:14 【问题描述】:

我绝不是编码员,所以我尝试过,但在这方面摔倒了。

我想使用 Google 的 Google Analytics Big Query Cookbook 中的这个查询

购买产品 A(增强型电子商务)的客户购买的产品

我已经粘贴了下面的代码

进入标准 SQL。

我尝试了几次,但都摔倒了,没有

提前谢谢你 约翰

SELECT hits.product.productSKU AS other_purchased_products, 
  COUNT(hits.product.productSKU) AS quantity
FROM (
  SELECT fullVisitorId, hits.product.productSKU, hits.eCommerceAction.action_type 
    FROM TABLE_DATE_RANGE([bigquery-public-data:google_analytics_sample.ga_sessions_],
                          TIMESTAMP('2017-04-01'), TIMESTAMP('2017-04-20'))
)
WHERE fullVisitorId IN (
  SELECT fullVisitorId
    FROM TABLE_DATE_RANGE([bigquery-public-data:google_analytics_sample.ga_sessions_],
                          TIMESTAMP('2017-04-01'), TIMESTAMP('2017-04-20'))
    WHERE hits.product.productSKU CONTAINS 'GGOEYOCR077799'
    AND hits.eCommerceAction.action_type = '6'
    GROUP BY fullVisitorId 
)
AND hits.product.productSKU IS NOT NULL
AND hits.product.productSKU !='GGOEYOCR077799'
AND hits.eCommerceAction.action_type = '6'
GROUP BY other_purchased_products
ORDER BY quantity DESC;

【问题讨论】:

你得到了什么结果?有什么错误吗?您期待什么结果? 【参考方案1】:

以下是 BigQuery 标准 SQL 中的纯等价物(没有任何优化、改进等 - 只是从旧版到标准的纯转换)

SELECT productSKU AS other_purchased_products, COUNT(productSKU) AS quantity
FROM (
  SELECT fullVisitorId, prod.productSKU, hit.eCommerceAction.action_type 
  FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*`,
  UNNEST(hits) hit, UNNEST(hit.product) prod
  WHERE _TABLE_SUFFIX BETWEEN '20170401' AND '20170420'
)
WHERE fullVisitorId IN (
  SELECT fullVisitorId
  FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*`,
  UNNEST(hits) hit, UNNEST(hit.product) prod
  WHERE _TABLE_SUFFIX BETWEEN '20170401' AND '20170420'
  AND prod.productSKU LIKE '%GGOEYOCR077799%'
  AND hit.eCommerceAction.action_type = '6'
  GROUP BY fullVisitorId 
)
AND productSKU IS NOT NULL
AND productSKU !='GGOEYOCR077799'
AND action_type = '6'
GROUP BY other_purchased_products
ORDER BY quantity DESC 

显然产生与旧版本完全相同的结果

【讨论】:

非常感谢,真的很有帮助。再次感谢您。

以上是关于将旧版 SQL 转换为标准 SQL - 增强型电子商务的主要内容,如果未能解决你的问题,请参考以下文章

如何将旧版 SQL BigQuery 转换为标准 SQL?

标准 sql 中的 bigquery 旧版 sql POSITION() 函数

如何将 ABS(HASH(...)) 从传统 sql 转换为标准 SQL

无法在 Google BigQuery 中将此旧版 SQL 转换为标准 SQL

无法将 BigQuery 旧版 SQL 转换为 HAVING LEFT(...) 的标准 SQL

如何在 BigQuery 中将此旧版 SQL 转换为标准 SQL?