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

如何通过Azure Event Hubs将数据自动写入Azure Data Explorer多表?

通过Azure Event Hubs向ADX多表写入数据的实现方案

问题根源

你之前将KQL的.ingest命令直接发送到Event Hubs,但ADX与Event Hubs的连接是原始数据 ingestion 管线,不支持解析KQL命令,这是导致BadRequest_InvalidBlob错误的核心原因。

正确实现步骤

1. 配置ADX的Event Hubs动态表路由

针对70个预定义表的场景,无需创建70个独立的Event Hubs连接,只需在现有连接中开启动态表路由:

  • 登录Azure门户,进入ADX集群的数据连接页面,找到对应的Event Hubs连接
  • 在路由设置中,选择通过Event Hubs消息属性或数据内容字段指定目标表:
    • 推荐用消息属性路由:设置路由键为TableName(自定义属性名),ADX会根据消息的TableName属性值自动匹配预定义表
    • 若用数据内容路由(如CSV第一列、JSON字段),需确保每条数据包含目标表标识,且ADX配置中指定对应字段

2. 优先采用CSV格式发送数据

CSV格式的发送规范需严格匹配ADX目标表的schema:

  • 每条Event Hubs消息对应一个表的数据集,列顺序、数据类型必须与目标表完全一致
  • 无需添加CSV表头(若带表头,需在ADX数据连接中开启SkipFirstRecord)
  • 示例CSV内容(对应LicenseInfo表):
    1701079234,State,123,2024-12-31
    
  • 发送消息时需设置:
    • 自定义属性TableName = LicenseInfo(匹配ADX预定义表名)
    • 消息ContentType = text/csv

3. JSON格式备选方案

若需用JSON发送,直接发送纯数据而非KQL命令:

  • 每条消息可发送单条JSON对象或JSON数组(批量数据)
  • 示例JSON内容:
    {"Time":1701079234,"LicensingState":"State","LicenseCountTotal":123,"MaintenanceEnd":"2024-12-31"}
    
  • 发送时设置:
    • 自定义属性TableName = LicenseInfo
    • 消息ContentType = application/json

4. 错误排查要点

  • 验证ADX数据连接配置:确认动态路由规则正确,目标表已存在且schema匹配
  • 检查数据格式:CSV列数、JSON字段名(大小写敏感)必须与目标表完全一致
  • 查询ADX ingestion日志:执行以下KQL获取详细错误信息
    .show ingestion failures
    | where FailedOn > ago(1h)
    

内容的提问来源于stack exchange,提问作者Dieter Schmitz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 01:52:25