IoT Analytics数据集仅返回__dt字段,查询是否存在异常?
解决数据集仅返回__dt字段的问题
1. 检查数据集的文件格式配置
确认数据集创建或编辑时,已指定文件类型为JSON,并开启GZIP压缩支持。如果之前没配置,进入数据集的存储设置页面修正这两项。
2. 调整SQL查询逻辑
直接查询数据存储根目录可能因分区嵌套无法解析内容,试试以下两种查询方式:
方式一:指定分区查询
先锁定具体分区验证内容是否可被解析:
SELECT * FROM salt_datastore WHERE __dt = '2022-10-09 00:00:00'
如果此查询能返回JSON内的字段,说明分区配置正常,只是默认根目录查询未自动遍历分区。
方式二:解析JSON内容
如果文件是单条JSON对象或JSON数组,需要用UNNEST或JSON函数提取字段:
- 若文件为单条JSON(如
{"sensor_id":"salt_sensor_0","value":840.0}):
SELECT __dt, t.* FROM salt_datastore, UNNEST(CAST(salt_datastore AS ARRAY<JSON>)) t WHERE __dt = '2022-10-09 00:00:00'
- 若需要提取指定字段:
SELECT __dt, JSON_EXTRACT_SCALAR(raw_content, '$.sensor_id') AS sensor_id, JSON_EXTRACT(raw_content, '$.value') AS sensor_value FROM ( SELECT __dt, CAST(salt_datastore AS STRING) AS raw_content FROM salt_datastore WHERE __dt = '2022-10-09 00:00:00' )
3. 验证数据存储分区配置
检查数据存储的分区设置,确保分区键__dt的格式与S3路径中的__dt=2022-10-09 00:00:00/完全匹配,日期格式、分隔符等不一致会导致无法识别分区内的文件内容。
4. 确认JSON文件格式
确保每个.gz文件内的JSON符合解析要求:
- 采用JSON Lines格式(每行一个独立JSON对象);
- 若为单个JSON对象或数组,需保证语法完全合法,无格式错误。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

