如何在Azure Data Factory中将API字典数据转为指定表结构
解决Azure Data Factory中API返回对象转行列结构并过滤上月数据的方案
步骤1:通过数据流动读取API返回的对象数据
创建新的数据流动,添加Web源组件,配置与Web活动一致的API请求参数,直接获取返回的JSON对象数据。
步骤2:将JSON对象转换为行式结构
在数据流动中依次添加两个处理活动:
- 派生列活动:新增一列(如命名为
KeyValuePairs),使用表达式entries(源数据)。该函数会把JSON对象转换为数组,每个元素包含key(对应原对象的数字键)和value(对应日期值),示例输出:[{"key":"96","value":"29/09/2022"},{"key":"95","value":"31/08/2022"},{"key":"93","value":"31/07/2022"}] - 扁平化活动:将
KeyValuePairs数组设为展开列,展开后生成每行对应一组key和value的行式数据。
步骤3:过滤上月对应的记录
添加过滤活动,设置筛选条件:
- 先将
value列转换为日期类型,再匹配上月的年份和月份:
注:year(toDate(value, 'dd/MM/yyyy')) == year(addMonths(currentDate(), -1)) && month(toDate(value, 'dd/MM/yyyy')) == month(addMonths(currentDate(), -1))currentDate()获取当前日期,addMonths(..., -1)得到上月日期,通过匹配年月确保筛选的是上月数据。
步骤4:写入目标表
添加接收器活动,配置目标数据库表:
- 映射
key列为ID、转换后的日期列为Date,直接写入即可生成ID和Date两列的行式结构数据。
替代方案(无需数据流动)
如果偏好使用活动组合而非数据流动,可按以下流程操作:
- Web活动调用API获取JSON对象,将输出存入活动变量。
- Azure函数活动:编写轻量的Python/Node.js函数,接收JSON对象并转换为
[{"ID":"96","Date":"29/09/2022"},...]格式的数组,同时完成上月数据过滤。 - 复制数据活动:将Azure函数返回的数组作为源,映射列后写入目标表。
内容的提问来源于stack exchange,提问作者Cromwell1540
相关产品推荐
相关产品推荐

