栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

BigQuery选择*除两列外

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

BigQuery选择*除两列外

作为一个独立的示例,请考虑以下查询:

WITH T AS (  SELECt 10 AS a, ARRAY<STRUCT<x INT64, y STRING, z BOOL>>[      (1, 'foo', true)] AS arr UNIOn ALL  SELECT 11, ARRAY<STRUCT<x INT64, y STRING, z BOOL>>[      (2, 'bar', false), (3, 'baz', true)])SELECT * FROM T;

它返回

a
type
INT64
的列
arr
和type的列
ARRAY<STRUCT<x INT64, y STRING, zBOOL>>
。如果要返回
arr
对数组内部结构省略位置的修改,则
y
可以使用
SELECt * REPLACE
and的组合
SELECT *EXCEPT

WITH T AS (  SELECT 10 AS a, ARRAY<STRUCT<x INT64, y STRING, z BOOL>>[      (1, 'foo', true)] AS arr UNIOn ALL  SELECT 11, ARRAY<STRUCT<x INT64, y STRING, z BOOL>>[      (2, 'bar', false), (3, 'baz', true)])SELECT * REPLACE(ARRAY(SELECT AS STRUCT * EXCEPT (y) FROM UNNEST(arr)) AS arr)FROM T;

这个想法是用一个新数组替换原始数组,然后我们使用和的

ARRAY
子查询,
SELECt AS STRUCT
并使用
*EXCEPT
其字段不包括的struct元素重构该数组
y

回到问题中的查询,您可以将相同的想法应用于

difference
old_mode

SELECT * REPLACE (  ARRAY(SELECT AS STRUCT * EXCEPT (old_mode) FROM UNNEST(difference)) AS difference)FROM `bigquery-public-data.github_repos.commits`LIMIT 1000;

查询结果包含一个

difference
数组,其结构不包含该
old_mode
字段。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/517362.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号