转换重复记录到重复的字符串数组
我有表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