arrays - UNNEST 数组并使用 CASE WHEN 分配给新列
问题描述
我有以下具有嵌套结构的 BigQuery 表,即下面的示例是我表中的一条记录。
身份证 | 日期 | 时间 | 代码
AQ5ME | 120520 | 0950 | 123
---------- | 150520 | 1530 | 456
我的目标是取消嵌套数组以实现以下结构(假设 123 是开始日期代码,456 是结束日期代码):
身份证 | 开始日期 | 开始时间 | 结束日期 | 时间结束
AQ5ME | 120520 | 0950 | 150520 | 1530
我在 BigQuery 中尝试了基本的 UNNEST,结果如下:
身份证 | 开始日期 | 开始时间 | 结束日期 | 时间结束
AQ5ME | 120520 | 0950 | 空 | 无效的
AQ5ME | 空 | 空 | 150520 | 1530
您能否支持我如何以上述正确方式取消嵌套?
解决方案
您可以计算行内的最小值和最大值,并将它们提取为新列。由于您没有显示完整的架构,我假设 Date 和 Time 是单独的数组。对于这种情况,您可以使用该查询:
SELECT Id,
(SELECT MIN(D) from UNNEST(Date) as d) as StartDate,
(SELECT MIN(t) from UNNEST(Time) as t) as StartTime,
(SELECT MAX(D) from UNNEST(Date) as d) as EndDate,
(SELECT MAX(t) from UNNEST(Time) as t) as EndTime
FROM table
推荐阅读
- .net-core - .NET Core 运行状况检查:找不到所需的服务
- vba - 基于另一列值的 VBA Subtotal(9,"range")
- c# - 如何从 Web API 调用 ASP.NET Core Web MVC
- c# - 2sxc 获取实体的字段列表
- python - 装饰器的类型注释
- asp.net-core - 无法通过 Envoy (v1.17.0) 将 API 调用转发到 docker-compose (v1.27.4) 内的各自路由
- flutter - 未布置 RenderBox - 具有动态子项的特殊情况
- discord - discord.js \n 转义字符在使用 setDescription 的嵌入中不起作用
- php - 在 R 中使用 fromJSON 从 url 读取 json 输出,同时从文本文件中读取相同数据时出现“未定义的索引错误”
- typescript - 有什么方法可以在编码后立即通过终端运行 Typescript?