2D_*_*2D_ 0 google-bigquery unnest bigquery-standard-sql
我在从 Big Query 的嵌套模式查询时遇到了很多麻烦。我有以下字段。
我想把桌子弄平并得到这样的东西。
用户 | question_id | 用户选择
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
任何人都可以帮助我如何正确地取消嵌套这个表,以便我可以为所有数据项提供扁平化的架构?
谢谢!
下面是 BigQuery 标准 SQL
#standardSQL
SELECT user, question_id, choice
FROM `project.dataset.table`,
UNNEST(data) question,
UNNEST(user_choices) choice
Run Code Online (Sandbox Code Playgroud)
您可以使用以下问题中的虚拟数据进行测试,玩上面的游戏
#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
Run Code Online (Sandbox Code Playgroud)
结果
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3340 次 |
| 最近记录: |