具有数组字段的 bigquery 表中的不同行

Posted

技术标签:

【中文标题】具有数组字段的 bigquery 表中的不同行【英文标题】:distinct rows from bigquery table with array field 【发布时间】:2019-10-30 23:00:06 【问题描述】:

我有一个包含数组类型字段 candidate 的 bigquery 表。如何从该表中查询不同的行?

在这种情况下,我的查询应该只返回第一行。

【问题讨论】:

【参考方案1】:

我认为下面是最简单的方法,适用于任何类型和长度等。

#standardSQL
SELECT ANY_VALUE(candidate) candidate
FROM `project.dataset.table`
GROUP BY FORMAT('%T', candidate) 

以前我曾经为此使用 TO_JSON_STRING() - 但最近意识到 FORMAT() 最适合像这样的大多数情况

【讨论】:

aaah.. %T 行为:cloud.google.com/bigquery/docs/reference/standard-sql/… 没错! :o) 视情况而定,使用 %T%t 以获得最佳结果 :o)【参考方案2】:

类似:

select split(combed, ".") as candidate from (
   select distinct array_to_string(candidate, ".") as combed 
   from `dataset.table`
)

【讨论】:

以上是关于具有数组字段的 bigquery 表中的不同行的主要内容,如果未能解决你的问题,请参考以下文章

识别 2 个表中的不同行

MySQL Select ID 出现在具有多个特定值的列的不同行上

BigQuery:仅当字段具有特定值时才获取表中的最新行

如何使用 JPA 和 Spring 在列表中查找具有字段的不同行?

将一行中的金额添加到具有相同主键的不同行中的金额

BigQuery 将查询结果附加到具有必填字段的表中