You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

读取空Azure Cosmos DB容器时触发“无法解析列名_ts”错误求助

解决Azure Synapse数据流读取空Cosmos DB容器报"_ts"列无法解析的问题

问题描述

遍历多个Cosmos DB数据库及对应容器读取数据时,有数据的容器可正常执行,但空容器会抛出错误:

Job failed due to reason: Cannot resolve column name "_ts"

原因

当Cosmos容器为空时,Synapse数据流无法从现有数据中自动推断Schema,而_ts是Cosmos的默认系统属性,数据流默认尝试读取该字段,空容器无数据支撑推断,因此触发解析错误。

解决方案

1. 手动指定数据源Schema

直接在Synapse数据流的Cosmos数据源中手动定义包含_ts的Schema,替代自动推断:

  • 打开数据流的Cosmos数据源配置,切换到「Schema」标签
  • 若无法从空容器导入Schema,手动添加字段:
    • 新增字段_ts,类型设为Long
    • 补充业务所需的其他字段(如果有)
  • 保存配置后,空容器的数据流会基于手动Schema执行,不会再触发字段缺失错误

2. 管道层面判断容器是否为空,跳过空容器处理

在管道中先校验容器数据量,为空则跳过数据流执行:

  • 添加Lookup活动,执行Cosmos SQL查询:SELECT VALUE COUNT(1) FROM c,获取容器记录数
  • 用If Condition活动判断Lookup返回的计数:
    • 计数>0:执行对应数据流
    • 计数=0:跳过或执行空记录写入逻辑(如写入一条空数据到目标存储)

3. 关闭系统属性读取(无需_ts时)

如果业务逻辑不需要_ts等Cosmos系统属性,直接禁用读取:

  • 在Cosmos数据源的「Settings」标签,取消勾选「Include system properties」选项
  • 数据流不再尝试读取_ts,空容器时自然不会触发该错误

验证

重新运行管道,确认有数据的容器正常执行,空容器要么被跳过,要么基于手动Schema正常运行,无_ts解析错误。

内容的提问来源于stack exchange,提问作者Shailendra Kad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 05:30:42