展平 Google BigQuery 中的多个重复字段
Flattening multiple repeated fields in Google BigQuery
我正在尝试展平来自 Big Query 中重复字段的数据。我看过这个 Querying multiple repeated fields in BigQuery,但我似乎无法让它工作。
我的数据如下所示:
[
{
"visitorId": null,
"visitNumber": "15",
"device": {
"browser": "Safari (in-app)",
"browserVersion": "(not set)",
"browserSize": "380x670",
"operatingSystem": "iOS",
},
"hits": [
{
"isEntrance": "true",
"isExit": "true",
"referer": null,
"page": {
"pagePath": "/news/bla-bla-bla",
"hostname": "www.example.com",
"pageTitle": "Win tickets!!",
"searchKeyword": null,
"searchCategory": null,
"pagePathLevel1": "/news/",
"pagePathLevel2": "/bla-bla-bla",
"pagePathLevel3": "",
"pagePathLevel4": ""
},
"transaction": null
}
]
}
]
我要的是hits-page重复字段中的字段
例如我想获取 hits.page.pagePath(值为“/news/bla-bla-bla”)
我尝试了以下查询,但出现错误:
SELECT
visitorId,
visitNumber,
device.browser,
hits.page.pagePath
FROM
`Project.Page`
LIMIT 1000
我得到的错误是这个
Error: Cannot access field page on a value with type ARRAY<STRUCT<hitNumber INT64, time INT64, hour INT64, ...>>
在 ga_sessions
架构中,字段 hits
表示为 ARRAY
类型。
通常在使用此类型字段时,您需要应用 UNNEST 操作才能打开数组。
具体来说,在 FROM
子句中,您可以应用 CROSS JOIN
(您通过应用交叉连接操作取消嵌套数组,可以表示为逗号后跟 UNNEST 函数),例如所以:
SELECT
visitorId,
visitNumber,
device.browser,
hits.page.pagePath
FROM `Project.Page`,
UNNEST(hits) hits
LIMIT 1000
如果你想要特定的 pagePaths,你可以像这样过滤掉它们:
SELECT
visitorId,
visitNumber,
device.browser,
hits.page.pagePath
FROM `Project.Page`,
UNNEST(hits) hits
WHERE regexp_contains(hits.page.pagePath, r'/news/bla-bla-bla')
LIMIT 1000
确保阅读有关此主题的 BigQuery 文档,它写得非常好,您将学到很多处理大数据的新技术。
我正在尝试展平来自 Big Query 中重复字段的数据。我看过这个 Querying multiple repeated fields in BigQuery,但我似乎无法让它工作。
我的数据如下所示:
[
{
"visitorId": null,
"visitNumber": "15",
"device": {
"browser": "Safari (in-app)",
"browserVersion": "(not set)",
"browserSize": "380x670",
"operatingSystem": "iOS",
},
"hits": [
{
"isEntrance": "true",
"isExit": "true",
"referer": null,
"page": {
"pagePath": "/news/bla-bla-bla",
"hostname": "www.example.com",
"pageTitle": "Win tickets!!",
"searchKeyword": null,
"searchCategory": null,
"pagePathLevel1": "/news/",
"pagePathLevel2": "/bla-bla-bla",
"pagePathLevel3": "",
"pagePathLevel4": ""
},
"transaction": null
}
]
}
]
我要的是hits-page重复字段中的字段
例如我想获取 hits.page.pagePath(值为“/news/bla-bla-bla”)
我尝试了以下查询,但出现错误:
SELECT
visitorId,
visitNumber,
device.browser,
hits.page.pagePath
FROM
`Project.Page`
LIMIT 1000
我得到的错误是这个
Error: Cannot access field page on a value with type ARRAY<STRUCT<hitNumber INT64, time INT64, hour INT64, ...>>
在 ga_sessions
架构中,字段 hits
表示为 ARRAY
类型。
通常在使用此类型字段时,您需要应用 UNNEST 操作才能打开数组。
具体来说,在 FROM
子句中,您可以应用 CROSS JOIN
(您通过应用交叉连接操作取消嵌套数组,可以表示为逗号后跟 UNNEST 函数),例如所以:
SELECT
visitorId,
visitNumber,
device.browser,
hits.page.pagePath
FROM `Project.Page`,
UNNEST(hits) hits
LIMIT 1000
如果你想要特定的 pagePaths,你可以像这样过滤掉它们:
SELECT
visitorId,
visitNumber,
device.browser,
hits.page.pagePath
FROM `Project.Page`,
UNNEST(hits) hits
WHERE regexp_contains(hits.page.pagePath, r'/news/bla-bla-bla')
LIMIT 1000
确保阅读有关此主题的 BigQuery 文档,它写得非常好,您将学到很多处理大数据的新技术。