You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BigQuery多数组表中指定数组字段重复元素删除方法咨询

BigQuery数组字段去重实现方案

核心逻辑为仅对目标订单的Item数组做去重处理,Shipment等其余字段完全保留原值,无需修改表结构或拆分重组全表数据。

1. 先查询验证去重效果

先执行以下SELECT语句确认输出结果符合预期,避免误改数据:

SELECT
  `Order`, -- Order是SQL保留字,用反引号包裹避免报错
  ARRAY(
    SELECT AS STRUCT * EXCEPT(row_id)
    FROM (
      SELECT
        item.*,
        ROW_NUMBER() OVER(
          PARTITION BY item.Sku, item.Quantity, item.Price
          ORDER BY item.Sku
        ) AS row_id
      FROM UNNEST(Item) AS item
    )
    WHERE row_id = 1
  ) AS Item,
  Shipment -- 完全保留原Shipment数组内容
FROM Order_Table
-- 可加 WHERE `Order` = 123 仅查看目标订单的处理效果

2. 验证后更新原表

确认查询结果符合要求后,执行以下UPDATE语句直接修改原表,仅处理订单123,其余订单完全不受影响:

UPDATE Order_Table
SET Item = ARRAY(
    SELECT AS STRUCT * EXCEPT(row_id)
    FROM (
      SELECT
        item.*,
        ROW_NUMBER() OVER(
          PARTITION BY item.Sku, item.Quantity, item.Price
          ORDER BY item.Sku
        ) AS row_id
      FROM UNNEST(Item) AS item
    )
    WHERE row_id = 1
  )
WHERE `Order` = 123 -- 仅处理目标订单,其余订单数据无任何改动

处理逻辑说明:

  • 将每行的Item数组拆解为独立元素后,按Sku、Quantity、Price三个字段分组打行号,仅保留每组第一个元素,再重新拼装为数组回写Item字段
  • 整个过程不会修改Shipment等其他字段的内容,也不会影响其他订单的数据

内容的提问来源于stack exchange,提问作者Kim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 09:27:04