【问题标题】:converting many to many to one to many relationship in bigquery在bigquery中转换多对多对一对多关系
【发布时间】:2020-05-25 16:05:40
【问题描述】:

我在一个表中有 2 列-

Parentid                                                   ID       
3_UExpiZlgpglxaqM141IoDXtusBlpEcGjruIA                     1319760694.1580758970
3_UExpiZlgpglxaqM141IoDXtusBlpEcGjruIA                     667017325.1580160238
SorWqMp9k2NbOMeop-GomrzOTGerTDTnGzq6Ig                     667017325.1580160238
SorWqMp9k2NbOMeop-GomrzOTGerTDTnGzq6Ig                     109851370.1575305452
SorWqMp9k2NbOMeop-GomrzOTGerTDTnGzq6Ig                     1319760694.1580758970
7KoIW56HitFcs5y9huhfmh2RQgUXBdtrY0w                        1319760694.1580758970

因为第 3、4、5 行具有相同的 parentid - SorWqMp9k2NbOMeop-GomrzOTGerTDTnGzq6Ig- 我只想选择 G3 和 ID1、ID2、ID3。

我的目标是将最大数量的 ID 映射到一个 Parentid。

如何在 bigquery 中做到这一点?

【问题讨论】:

  • 您能否明确显示预期结果!并详细说明逻辑!看起来 ID1 也有 G1 作为父级......而 IDN 的其余部分还有其他父级 - 那么选择一个与其他的逻辑是什么?
  • 感谢您的调查。正如你所说,我进行了更改。

标签: google-bigquery


【解决方案1】:

根据您的问题,您只想在重复中选择一个 Parentid 和对应的 IDs场地。

您可以使用ARRAY_AGG() 方法实现这一点,它返回一个ARRAY 表达式值。您还可以向该方法添加 distinct,以便只返回唯一的 ID。我使用了您提供的示例数据和您的语法如下。

#standadSQL
SELECT
  Parentid,
  ARRAY_AGG(Distinct ID) AS ID
FROM
  `project_id.dataset.source_table`
GROUP BY
  Parentid

还有输出,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    相关资源
    最近更新 更多