【问题标题】:Getting a list of productSKUs into one field in Bigquery SQL将 productSKU 列表放入 Bigquery SQL 中的一个字段
【发布时间】:2018-01-28 21:33:07
【问题描述】:

我正在与 Google bigquery 中的一个查询争论不休,希望有人能提供帮助。

所需的输出列:

访问 id - ecommerce_actiontype - sku_list

示例: 访问编号:123 电子商务动作类型:6 sku_list: [SKU1,SKU2,SKU3]

我尝试了以下两个查询:

1)

SELECT
visitid,
eCommerceAction.action_type as ecommerce_actiontype,
(SELECT ARRAY_AGG(productSKU) from UNNEST(hits.product)) AS sku_list
FROM `test.1234.ga_sessions_*` as t, t.hits as hits, hits.product as p

这不会将 productSKU 放入一个按 visitid 和 ecommat 分组的列表中。

2)

SELECT
visitid,
eCommerceAction.action_type as ecommerce_actiontype,
ARRAY_AGG(productSKU) AS sku_list
FROM `oval-unity-88908.97547244.ga_sessions_*` as t, t.hits as hits, hits.product as p

这给了我错误“错误:SELECT 列表表达式引用了在 [16:1] 处既未分组也未聚合的列 visitid”

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

【问题讨论】:

    标签: sql google-bigquery


    【解决方案1】:

    没有 ga_sessions 表的架构详细信息,但请在下面尝试

    #standardSQL
    SELECT
      visitid,
      eCommerceAction.action_type AS ecommerce_actiontype,
      (SELECT ARRAY_AGG(product.productSKU) FROM UNNEST(t.hits) WHERE NOT product.productSKU IS NULL) AS sku_list,
      ARRAY(SELECT product.productSKU FROM UNNEST(t.hits) WHERE NOT product.productSKU IS NULL) AS sku_list2
    FROM `test.1234.ga_sessions_*` AS t  
    

    如您所见 - 我提出了两个用于构建所需数组的选项 - ARRAY_AGGSELECTARRAY(SELECT

    【讨论】:

    • 嘿,感谢您的调查。不幸的是,如果我在 [20:28] 尝试此操作并标记为“product.产品 SKU”。有什么想法吗?
    • 我也试过 SELECT visitid, ARRAY(SELECT productSKU FROM UNNEST(hits.product)) AS sku_list2 FROM test.1234.ga_sessions_* as t, t.hits as hits 但这给了我错误 UNNEST expression references hits .product 在 [21:39] 时既不分组也不聚合
    【解决方案2】:

    看看这是否适合你:

    SELECT 
      visitid,
      ARRAY(SELECT AS STRUCT ecommerceAction.action_type act_type, ARRAY_AGG(DISTINCT productSku IGNORE NULLS) skus_list FROM UNNEST(hits), UNNEST(product) GROUP BY 1) data
    FROM `test.1234.ga_sessions_*`
    

    此查询与您的查询之间的主要区别在于,它避免在 hits 字段上使用外部 UNNEST,这有助于稍后为每个 visitId 汇总所有 ecommerceAction 和与之关联的 skus。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-22
      • 2012-12-06
      • 2011-06-10
      • 1970-01-01
      • 2021-03-08
      • 1970-01-01
      相关资源
      最近更新 更多