Google cloud platform 如何在BigQuery中创建嵌套字段和数组的数组
我正试图根据json模式在BigQuery中创建一个表,我将把它放在GCS中,并从那里推送到一个发布/子主题。我需要创建一些数组和嵌套字段来实现这一点 通过使用struct和array_agg,我可以实现struct的数组,但我不知道如何创建数组的struct 假设我有一个json模式,如下所示:Google cloud platform 如何在BigQuery中创建嵌套字段和数组的数组,google-cloud-platform,nested,google-bigquery,bigquery-standard-sql,Google Cloud Platform,Nested,Google Bigquery,Bigquery Standard Sql,我正试图根据json模式在BigQuery中创建一个表,我将把它放在GCS中,并从那里推送到一个发布/子主题。我需要创建一些数组和嵌套字段来实现这一点 通过使用struct和array_agg,我可以实现struct的数组,但我不知道如何创建数组的struct 假设我有一个json模式,如下所示: { "vacancies": { "id": "12", "timestamp": "2019-08-22T04:04:26Z", "version": "1.0",
{
"vacancies": {
"id": "12",
"timestamp": "2019-08-22T04:04:26Z",
"version": "1.0",
"positionOpening": {
"documentId": {
"value": "505"
},
"statusCode": "Closed",
"registrationDate": "2014-05-07T16:11:22Z",
"lastUpdated": "2014-05-07T16:14:56Z",
"positionProfiles": [
{
"positionTitle": "Data Scientist for international company",
"positionQualifications": [
{
"experienceSummary": [
{"measure": {"value": "10","unitCode": "ANN"}},
{"measure": {"value": "4","unitCode": "ANN"}}
],
"educationRequirement": {
"programs": ["Physics","Computer Science"],
"programConcentrations": ["Data Analysis","Python Programming"]
},
"languageRequirement": [
{
"competencyName": "English",
"requiredProficiencyLevel": {"scoresNumeric": [{"value": "100"},{"value": "95"}]}
},
{
"competencyName": "French",
"requiredProficiencyLevel": {"scoresNumeric": [{"value": "95"},{"value": "70"}]}
}
]
}
]
}
]
}
}
}
如何创建SQL查询以获得结果
提前感谢您的帮助 您可能需要构建一个临时表来执行此操作 第一个create语句将使用非规范化的表将其转换为具有结构数组的表 第二个create语句将获取该临时表,并将该数组嵌入结构的数组中 您可以从第一个查询中删除内部结构,并在第二个查询中使用数组包装器来构建严格的数组结构。但这应该足够灵活,您可以创建一个结构数组、一个数组结构或这两种结构的任意组合,创建次数可以达到BigQuery允许的最大深度15级 这样做的最终结果可能是一个具有标准数据类型的一列(column1)的表,以及一个名为OutsideArrayOfStructs的结构数组。该结构有两列“标准”数据类型,以及一个名为InsidearLayOfStructs的结构数组
您可能需要构建一个临时表来执行此操作 第一个create语句将使用非规范化的表将其转换为具有结构数组的表 第二个create语句将获取该临时表,并将该数组嵌入结构的数组中 您可以从第一个查询中删除内部结构,并在第二个查询中使用数组包装器来构建严格的数组结构。但这应该足够灵活,您可以创建一个结构数组、一个数组结构或这两种结构的任意组合,创建次数可以达到BigQuery允许的最大深度15级 这样做的最终结果可能是一个具有标准数据类型的一列(column1)的表,以及一个名为OutsideArrayOfStructs的结构数组。该结构有两列“标准”数据类型,以及一个名为InsidearLayOfStructs的结构数组
你能澄清一下吗?结果你想要什么?什么数组的结构?你能澄清一下吗?结果你想要什么?什么数组的结构?
CREATE OR REPLACE TABLE dataset.tempTable as (
select
column1,
column2,
column3,
ARRAY_AGG(
STRUCT(
ArrayObjectColumn1,
ArrayObjectColumn2,
ArrayObjectColumn3
)
) as InsideArrayOfStructs
FROM
sourceDataset.sourceTable
GROUP BY
column1,
column2,
column3 )
CREATE OR REPLACE TABLE dataset.finalTable as (
select
column1,
ARRAY_AGG(
STRUCT(
column2,
column3,
InsideArrayOfStructs
)
) as OutsideArrayOfStructs
FROM
dataset.tempTable
GROUP BY
Column1 )