我在从Big Query的嵌套模式进行查询时遇到了很多麻烦。 我有以下字段。
我想弄平桌子,得到这样的东西。
用户|问题ID | user_choices
123 | 1 | 1
123 | 1 | 2
123 | 1 | 3
123 | 1 | 4
从其他资源来看,我可以从重复列中的一条记录进行查询。如以下内容:
SELECT用户,dat.question_id FROM表名,UNNEST(data)dat
但是当我这样做时,我又得到了另一遍重复的专栏。
SELECT用户,dat.question_id,dat.user_choices FROM表名,UNNEST(data)dat
任何人都可以帮助我如何正确删除该表,以便为所有数据项提供扁平化的架构吗?
谢谢!
答案 0 :(得分:2)
以下是用于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