sql - Athena 查询失败,字段不存在
问题描述
我有 JSON 格式的 S3 数据文件,在运行胶水爬虫后,数据在 Athena 表中可用。
在 Athena 表中,我有一个类型为 的列(比如属性)<struct<x:string>,<y: int>,etc.>
。现在,在某个截止日期之后,z
在此属性列中添加了一个新字段(例如 ),现在数据类型为<struct<x:string>,<y: int>,<z:String> , <etc.>>
。
要求
我想使用相同的查询来查询旧数据和新数据,该查询基于z
.
问题
问题是以前的数据不包含此字段,当我应用该where
子句时,由于在旧数据中找不到该字段,因此会出错。是否可以选择不使旧数据的查询失败或将属性中的缺失字段视为空?
解决方案
您可以使用COALESCE()
为 插入默认值z
。这样的事情应该可以解决问题:
SELECT col.x, col.y, COALESCE(col.z, 0)
FROM table
WHERE COALESCE(col.z, 0) > 0;
推荐阅读
- go - 如何在 Golang 中查看导入的包
- jsonschema - 无法理解 FHIR 资源的 ajv 验证输出
- javascript - 原生 UI 组件与原生模块
- c# - 使用 Linq 查询将以下代码简化为单行代码
- python - 为什么我们必须创建一个新组来对 Odoo v8 中的所有用户隐藏菜单项?
- jira - 在构建服务器上禁用 Behave Pro 任务
- javascript - AJAX 成功后在 tooltipster 中更新 html 内容
- cassandra - 在一个数据中心中使用具有 3 节点 cassandra 集群的 NetworkTopology 对性能的影响
- azure - 如何使用连接字符串的 Key Vault 机密绑定 Azure Functions 中的事件中心?
- jquery - 单击其他链接时如何更改活动课程?