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

Azure Stream Analytics提取Event Hub JSON数组数据遇错,求解决方案

Azure Stream Analytics 提取嵌套JSON数组元素的可行方案

针对你提供的嵌套JSON结构(外层为数组,内部包含User数组),可以通过Azure Stream Analytics(ASA)的GetArrayElements函数结合CROSS APPLY来展平数组并提取元素,具体实现如下:

前提说明

假设你的输入流别名为EventHubInput(需替换为你实际的输入流名称),传入的JSON结构为外层数组包裹的对象集合。

完整查询语句

-- 第一步:展平最外层的JSON数组
WITH FlattenedOuter AS (
    SELECT GetArrayElements(input) AS OuterItem
    FROM EventHubInput
)
-- 第二步:展平嵌套的User数组并提取字段
SELECT
    UserItem.ArrayValue.status,
    UserItem.ArrayValue.userId,
    UserItem.ArrayValue.username,
    UserItem.ArrayValue.firstName,
    UserItem.ArrayValue.lastName,
    UserItem.ArrayValue.email,
    UserItem.ArrayValue.Manager,
    UserItem.ArrayValue.HumanResource
FROM FlattenedOuter
CROSS APPLY GetArrayElements(OuterItem.ArrayValue.User) AS UserItem

关键说明

  1. 展平外层数组:使用GetArrayElements(input)将传入的外层数组拆分为单个对象,存入CTEFlattenedOuter中。
  2. 展平User数组:通过CROSS APPLY GetArrayElements(OuterItem.ArrayValue.User),将每个对象中的User数组拆分为单个用户记录。
  3. 字段提取:直接通过ArrayValue.字段名的方式访问用户对象中的属性,ASA会自动解析JSON结构。

常见问题处理

如果遇到"函数不支持"类错误,需检查以下几点:

  • 确认使用ASA官方支持的函数:GetArrayElements是ASA专属的数组处理函数,请勿使用其他SQL方言的数组函数(如UNNEST)。
  • 输入流序列化格式设置:在ASA输入配置中,需将"序列化格式"指定为JSON,否则无法自动解析嵌套结构。
  • 字段名称大小写:JSON中的字段名称(如User、status)需与查询中的引用完全一致,ASA对大小写敏感。

内容的提问来源于stack exchange,提问作者Sandeep T

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 19:01:14