【问题标题】:Big Query | Unnest after Identifying Duplicate Rows大查询 |识别重复行后取消嵌套
【发布时间】:2020-10-07 12:37:03
【问题描述】:

我正在尝试取消我表中的 line_items 嵌套。但是,我必须从我们的表中删除重复项,它会抛弃正常工作的内容。

这是我用来消除重复的查询:

   SELECT *, ROW_NUMBER() OVER(PARTITION BY id) AS instance
       FROM `shopify.orders` )
      -- identify duplicate rows
   where instance = 1

但是,当我尝试在此查询中取消嵌套 line_items 时,它不再能够按 id 分区

   SELECT *, ROW_NUMBER() OVER(PARTITION BY id) AS instance
       FROM `shopify.orders`, unnest(line_items) as items )
      -- identify duplicate rows
   where instance = 1

有什么想法可以消除重复项,同时还可以取消 line_items 的嵌套吗?

在不删除重复项的情况下,我的数据如下所示:

删除重复项时,如下所示:

【问题讨论】:

  • 请提供样本数据和期望的结果,以便清楚您所说的“重复”是什么意思。
  • @GordonLinoff 你可以在这里更好地看到重复删除:stackoverflow.com/questions/36675521/…

标签: sql google-bigquery


【解决方案1】:

您可以先进行 dedup,然后再取消嵌套结果 - 如下例所示

SELECT * EXCEPT(instance, line_items) FROM (
  SELECT *, ROW_NUMBER() OVER(PARTITION BY id) AS instance
  FROM `shopify.orders` 
), UNNEST(line_items) as item
   -- identify duplicate rows
WHERE instance = 1

【讨论】:

    猜你喜欢
    • 2011-10-28
    • 2019-10-12
    • 2012-08-05
    • 2016-07-17
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    相关资源
    最近更新 更多