google-bigquery - 在bigquery中转换多对多对一对多的关系
问题描述
我在一个表中有 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 中做到这一点?
解决方案
根据您的问题,您只想在重复字段中选择一个Parentid和相应的ID。
您可以使用ARRAY_AGG()方法实现这一点,它返回一个表达式值的ARRAY。您还可以向该方法添加 distinct,以便您只返回唯一ID。我使用了您提供的示例数据和您的语法如下。
#standadSQL
SELECT
Parentid,
ARRAY_AGG(Distinct ID) AS ID
FROM
`project_id.dataset.source_table`
GROUP BY
Parentid
而输出,
推荐阅读
- session - 无法在数据库中存储会话
- python - 使用每个人多行的Dataframe,创建一个每人一行并获取某个属性的模式(每人)
- javascript - 如何在 node.js 中导出许多猫鼬模型模块
- c# - 如何在 Prism 中向 IoC 注册课程
- javascript - 谷歌可视化气泡图根据值更改图例颜色
- xml - Xpath/XSLT:如何选择没有名称的子元素的属性...?
- .net - 解决 IIS 中托管 netcore 2.1 web api 时的 404 错误
- javascript - 有没有办法在组件 A 的方法中添加事件侦听器,并将目标放在单独的组件中
- python - 使用来自 H2O 的超参数在 Sklearn 中重新构建 XGBoost 在 Python 中提供了不同的性能
- android - Xamarin Forms and Prism to native view - 从 prism 项目中的视图导航到共享项目中的视图