Google BigQuery 中的嵌套字段
Posted
技术标签:
【中文标题】Google BigQuery 中的嵌套字段【英文标题】:Nested Fields in Google BigQuery 【发布时间】:2018-10-16 20:40:51 【问题描述】:我正在尝试取消嵌套一些嵌套字段并在 Google BigQuery 中执行子查询。
这很好用。
SELECT id,
custom_field_options
FROM `project.database.ticket_fields`
'custom_field_options' 是一个嵌套字段,这给我带来了一些问题。我有“custom_field_options.id”和“custom_field_options.name”以及其他几个嵌套字段。
这也很好用。
SELECT ticket_fields.id,
ticket_fields.raw_title,
ticket_custom_fields.name AS ticket_custom_fields_name,
ticket_custom_fields.raw_name AS ticket_custom_fields_raw_name,
ticket_custom_fields.value AS ticket_custom_fields_value,
ticket_fields.created_at
FROM `project.database.ticket_fields` AS ticket_fields
LEFT JOIN UNNEST(custom_field_options) AS ticket_custom_fields
GROUP BY 1,2,3,4,5,6
单独运行时,这两个查询都运行良好。现在,我正在尝试将第一个查询作为第二个查询的子查询运行,以从该查询中提取所有 id,并在此基础上运行下面的查询。
SELECT ticket_fields.id,
ticket_fields.raw_title,
ticket_custom_fields.name AS ticket_custom_fields_name,
ticket_custom_fields.raw_name AS ticket_custom_fields_raw_name,
ticket_custom_fields.value AS ticket_custom_fields_value,
ticket_fields.created_at
FROM `project.database.ticket_fields` AS ticket_fields
LEFT JOIN UNNEST(custom_field_options) AS ticket_custom_fields
WHERE id IN (SELECT id,
custom_field_options
FROM `project.database.ticket_fields`)
GROUP BY 1,2,3,4,5,6
【问题讨论】:
错误是什么?预期的结果是什么? 这是我的错误:列名 id 在 [9:9] 时不明确 【参考方案1】:您可以限定id
列名以使引用明确:
SELECT ticket_fields.id,
ticket_fields.raw_title,
ticket_custom_fields.name AS ticket_custom_fields_name,
ticket_custom_fields.raw_name AS ticket_custom_fields_raw_name,
ticket_custom_fields.value AS ticket_custom_fields_value,
ticket_fields.created_at
FROM `project.database.ticket_fields` AS ticket_fields
LEFT JOIN UNNEST(custom_field_options) AS ticket_custom_fields
WHERE ticket_fields.id IN (SELECT id,
custom_field_options
FROM `project.database.ticket_fields`)
GROUP BY 1,2,3,4,5,6
(我假设ticket_fields.id
是您要搜索的id
)
【讨论】:
是的,这就是问题所在。我忘记了;有一段时间没有这样做了。还有一件事,我只是将子查询更改为:WHERE ticket_metrics.id IN (SELECT id FROMproject.database.ticket_metrics
)。错误显示为“无法识别的名称:ticket_metrics”。子查询工作正常,在名为“ticket_metrics”的表中肯定有一个名为“in”的字段。这很奇怪。
很难说没有更多的上下文,对不起。如果您可以发布一个更详细的单独问题,有人可能会提供帮助。以上是关于Google BigQuery 中的嵌套字段的主要内容,如果未能解决你的问题,请参考以下文章
对 Google Bigquery 中的嵌套字段使用 OFFSET 而不是 UNNEST
无法使用 google bigquery(标准)取消嵌套某些字段