BigQuery:展平嵌套架构中的所有重复字段
BigQuery: Flattening all repeated fields in nested schema
我在从 Big Query 的嵌套模式中查询时遇到了很多麻烦。
我有以下字段。
我想压平 table 并得到类似这样的东西。
用户 | question_id | user_choices
123 | 1 | 1
123 | 1 | 2
123 | 1 | 3
123 | 1 | 4
从其他资源中,我可以从重复列中的记录之一进行查询。比如下面的:
SELECT user, dat.question_id FROM tablename, UNNEST(data) dat
它给了我这个结果。
但是当我这样做时,我又得到了另一个重复的列。
SELECT user, dat.question_id, dat.user_choices FROM tablename, UNNEST(data) dat
任何人都可以帮助我如何正确地 UNNEST table 以便我可以为所有数据项设置扁平化模式?
谢谢!
以下适用于 BigQuery 标准 SQL
#standardSQL
SELECT user, question_id, choice
FROM `project.dataset.table`,
UNNEST(data) question,
UNNEST(user_choices) choice
您可以使用您问题中的虚拟数据来测试和使用上面的内容,如下所示
#standardSQL
WITH `project.dataset.table` AS (
SELECT 1 user,
[STRUCT<question_id INT64, user_choices ARRAY<INT64>>
(1,[1,2,3]),
(2,[2,5]),
(3,[1,3])
] data UNION ALL
SELECT 2 user,
[STRUCT<question_id INT64, user_choices ARRAY<INT64>>
(1,[2,3]),
(2,[4,5]),
(3,[2,6])
] data
)
SELECT user, question_id, choice
FROM `project.dataset.table`,
UNNEST(data) question,
UNNEST(user_choices) choice
ORDER BY user, question_id, choice
结果
Row user question_id choice
1 1 1 1
2 1 1 2
3 1 1 3
4 1 2 2
5 1 2 5
6 1 3 1
7 1 3 3
8 2 1 2
9 2 1 3
10 2 2 4
11 2 2 5
12 2 3 2
13 2 3 6
我在从 Big Query 的嵌套模式中查询时遇到了很多麻烦。 我有以下字段。
我想压平 table 并得到类似这样的东西。
用户 | question_id | user_choices
123 | 1 | 1
123 | 1 | 2
123 | 1 | 3
123 | 1 | 4
从其他资源中,我可以从重复列中的记录之一进行查询。比如下面的:
SELECT user, dat.question_id FROM tablename, UNNEST(data) dat
它给了我这个结果。
但是当我这样做时,我又得到了另一个重复的列。
SELECT user, dat.question_id, dat.user_choices FROM tablename, UNNEST(data) dat
任何人都可以帮助我如何正确地 UNNEST table 以便我可以为所有数据项设置扁平化模式?
谢谢!
以下适用于 BigQuery 标准 SQL
#standardSQL
SELECT user, question_id, choice
FROM `project.dataset.table`,
UNNEST(data) question,
UNNEST(user_choices) choice
您可以使用您问题中的虚拟数据来测试和使用上面的内容,如下所示
#standardSQL
WITH `project.dataset.table` AS (
SELECT 1 user,
[STRUCT<question_id INT64, user_choices ARRAY<INT64>>
(1,[1,2,3]),
(2,[2,5]),
(3,[1,3])
] data UNION ALL
SELECT 2 user,
[STRUCT<question_id INT64, user_choices ARRAY<INT64>>
(1,[2,3]),
(2,[4,5]),
(3,[2,6])
] data
)
SELECT user, question_id, choice
FROM `project.dataset.table`,
UNNEST(data) question,
UNNEST(user_choices) choice
ORDER BY user, question_id, choice
结果
Row user question_id choice
1 1 1 1
2 1 1 2
3 1 1 3
4 1 2 2
5 1 2 5
6 1 3 1
7 1 3 3
8 2 1 2
9 2 1 3
10 2 2 4
11 2 2 5
12 2 3 2
13 2 3 6