如何在Azure Data Factory中不区分大小写解析JSON
解决Azure Data Factory中JSON属性大小写不兼容的解析问题
针对你遇到的JSON属性名大小写各异的问题,在ADF数据流里可以通过以下两种方式定义输出列表达式,实现兼容解析:
方法1:用coalesce()函数匹配所有大小写变体
coalesce()会返回第一个非null的结果,你可以把所有可能的大小写属性名依次传入,确保只要存在任意一种格式都能取到值。
比如要提取用户ID属性,假设可能的写法有userId、UserID、userid、USERID,派生列的表达式可以写:
coalesce(Payload.userId, Payload.UserID, Payload.userid, Payload.USERID)
把Payload替换成你实际的源JSON列名,后面的属性名枚举所有出现过的大小写格式即可。
方法2:统一JSON键名大小写后提取
如果不确定所有可能的大小写变体,或者变体太多,可以先把JSON对象的所有键转为统一大小写(比如全小写),再通过标准化后的键取值。
- 先添加一个派生列,用
map()函数处理JSON,把所有键转成小写:
map(parseJson(Payload), (val, key) => { lower(key): val })
这个表达式会生成一个新的JSON对象,所有键都是小写格式。
- 基于处理后的JSON提取属性,比如要提取用户名,直接用:
processedJson.username
这里processedJson是你第一步派生列的列名,username是标准化后的小写键名。
数据流中的应用建议
在你的数据流里,推荐在解析JSON转换之后添加派生列转换,用上面的表达式生成兼容大小写的目标列,再将这些列映射到目标SQL表的对应字段即可。
内容的提问来源于stack exchange,提问作者SauGo
相关产品推荐
相关产品推荐

