转换重复记录到重复的字符串数组

我有表A中,其中列中的一个是像转换重复记录到重复的字符串数组" title="字符串数组">字符串数组

   +- children: record (repeated) 

| |- name: string

| |- gender: string

| |- age: integer

我有一个表B,其中所述柱中的一个是STRING一个重复RECORD(重复)

   +- names : string (repeated) 

寻找选项将名称列表从RECORD中的表A移动到表B的字符串数组。

任何建议都会有很大的帮助

回答:

可以使用ARRAY功能。试试这个:

#standardSQL 

SELECT

ARRAY_TO_STRING(

ARRAY(SELECT name FROM UNNEST(children))

) AS names

FROM `dataset.table`

它创建正好从结构内的name领域的新阵列,然后将数组转换为字符串。

回答:

下面是BigQuery的标准SQL

如果你希望得到阵列您可以使用下面

#standardSQL 

SELECT ARRAY(SELECT name FROM UNNEST(children)) AS names

FROM `yourproject.yourdataset.yourtable`

您可以测试/使用虚拟数据作为

#standardSQL 

WITH `yourproject.yourdataset.yourtable` AS (

SELECT [STRUCT<name STRING, gender STRING, age INT64>('abc1','m',12),('xyz1','m',13),('uvw1','f',14)] children UNION ALL

SELECT [STRUCT<name STRING, gender STRING, age INT64>('abc2','f',12),('xyz2','m',13),('uvw2','f',14)]

)

SELECT ARRAY(SELECT name FROM UNNEST(children)) AS names

FROM `yourproject.yourdataset.yourtable`

它玩

输出为

Row names  

1 abc1

xyz1

uvw1

2 abc2

xyz2

uvw2

在情况下,如果你期望的字符串

#standardSQL 

SELECT (SELECT STRING_AGG(name) FROM UNNEST(children)) AS names

FROM `yourproject.yourdataset.yourtable`

您可以测试/使用相同的虚拟数据

#standardSQL 

WITH `yourproject.yourdataset.yourtable` AS (

SELECT [STRUCT<name STRING, gender STRING, age INT64>('abc1','m',12),('xyz1','m',13),('uvw1','f',14)] children UNION ALL

SELECT [STRUCT<name STRING, gender STRING, age INT64>('abc2','f',12),('xyz2','m',13),('uvw2','f',14)]

)

SELECT (SELECT STRING_AGG(name) FROM UNNEST(children)) AS names

FROM `yourproject.yourdataset.yourtable`

和输出现在是

Row names  

1 abc1,xyz1,uvw1

2 abc2,xyz2,uvw2

它玩

以上是 转换重复记录到重复的字符串数组 的全部内容, 来源链接: utcz.com/qa/265210.html

回到顶部