【Azure Stream Analytic】用 JavaScript UDF 解决 JSON 字段被转成 Record 的关键点

问题描述

Azure Stream Analytics(ASA)将数据输出到下游并转换为CSV时,某些 JSON 字段(如 message)被自动转换成 Record 类型,导致原本期望的 JSON 字符串无法正常展示或被下游系统解析。

问题解答

出现该问题的主要原因是:ASA 在处理 JSON 对象时,如果输入字段是 JSON 对象(object 类型)而非 JSON 字符串,会在输出为 CSV 时默认序列化成 Record。

解答疑惑:为什么 JSON 字段会变成 Record

  • ASA 对输入字段进行类型推断:
    • 字符串 → 正常写入 CSV
    • 对象(Object) → 默认序列化为 Record
  • 当上游消息从"JSON 字符串"变成"JSON 对象"时,ASA 识别到的是结构化对象,因此在输出到 CSV 时自动以 Record 的方式呈现。
  • 因此需主动将 JSON 对象转换为字符串,最简方式是使用 JavaScript UDF。

解决步骤

第一步:创建 JavaScript UDF

  • 打开 ASA Job → 点击 Functions(函数)
  • 选择 Add FunctionJavaScript UDF
  • 填写函数名称(如 jsonstringify
  • 在编辑器中填写 JavaScript 代码
复制代码
function main(x) {
    return JSON.stringify(x);
}
  • 保存函数

第二步:在 ASA 查询中调用 UDF

在 ASA 查询内,对目标字段使用 UDF,例如:

复制代码
SELECT
UDF.jsonstringify(input.message) AS message,
*
INTO output

保存查询并启动作业后,JSON 对象将被转换成字符串并成功写入 CSV。

参考资料

JavaScript user-defined functions in Azure Stream Analytics : https://learn.microsoft.com/en-us/azure/stream-analytics/stream-analytics-javascript-user-defined-functions#other-javascript-user-defined-function-patterns


当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

相关推荐
开开心心就好5 小时前
批量提取PDF中的图片,直接导出原图
前端·javascript·支持向量机·智能手机·pdf·html·启发式算法
默_笙9 小时前
🏛 给 AI 配一间办公室:Harness Engineering 六大模块与它的实现
前端·javascript
linux_cfan10 小时前
videojs v10 源代码系列解读:14 · 谓词守卫:在运行时安全地调用能力
前端·javascript·音视频
天若有情67312 小时前
【纯前端小工具】公历生日转农历,批量查询每年农历生日对应的公历日期(GitHub Pages在线直接用)
前端·javascript·github pages·农历转换·lunisolar·网页小工具
林语琛13 小时前
我写的 switch…break 被 Babel 偷偷吞了
前端·javascript·babel
liuchangng14 小时前
Jev 模型研究:从生成式大模型到决策式模型——System One、RLCD 校准与采用边界
java·javascript·人工智能·python·深度学习
我命由我1234515 小时前
CSS - CSS 媒体查询 orientation
前端·javascript·css·html·css3·html5·js
志尊宝18 小时前
Vue3 零基础每日笔记(048):嵌套路由与命名视图——后台管理系统布局雏形
前端·javascript·vue.js·笔记·html5
@tangguo12318 小时前
npm 和 yarn 配置说明
前端·javascript·npm·node.js·yarn
志尊宝19 小时前
Vue3 零基础每日笔记(052):路由常见坑一次排雷——404、刷新丢参数、部署白屏
前端·javascript·vue.js·笔记·html5