Google bigquery 将一些列合并为结构的数组到现有数组
我有这个模式 我想得到一个结构数组,它将Google bigquery 将一些列合并为结构的数组到现有数组,google-bigquery,Google Bigquery,我有这个模式 我想得到一个结构数组,它将(功能,数值)与分类值的结构数组合并。请注意,category也可以是空字符串,我们希望跳过它 我设法这样做,但我正在寻找另一种较短的方法: select centroid_id,array_agg(struct(name,value) order by centroid_id) as cluster from ( select centroid_id,concat(feature,'_',category) as name,value FRO
(功能,数值)
与分类值的结构数组合并。请注意,category也可以是空字符串,我们希望跳过它
我设法这样做,但我正在寻找另一种较短的方法:
select centroid_id,array_agg(struct(name,value) order by centroid_id) as cluster from (
select centroid_id,concat(feature,'_',category) as name,value
FROM
ML.CENTROIDS(MODEL `modelv1`), unnest(categorical_value)
where length(category)>0
union all
select centroid_id,feature as name,numerical_value as value
FROM
ML.CENTROIDS(MODEL `modelv1`)
where numerical_value is not null
)
group by centroid_id
order by centroid_id
或
#standardSQL
SELECT centroid_id,
(
SELECT ARRAY_AGG(STRUCT(name,value)) FROM (
SELECT CONCAT(feature,'_',category) AS name,value FROM UNNEST(categorical_value)
WHERE LENGTH(category)>0
UNION ALL
SELECT feature, numerical_value
)
WHERE value IS NOT NULL
) AS cluster
FROM
ML.CENTROIDS(MODEL `modelv1`)
#standardSQL
SELECT centroid_id,
ARRAY(
SELECT AS STRUCT name,value FROM (
SELECT CONCAT(feature,'_',category) AS name,value FROM UNNEST(categorical_value)
WHERE LENGTH(category)>0
UNION ALL
SELECT feature, numerical_value
)
WHERE value IS NOT NULL
) AS cluster
FROM
ML.CENTROIDS(MODEL `modelv1`)