如何在Azure Data Factory中读取Blob存储中每日生成的带时间戳JSON文件
读取Blob存储中每日带时间戳的JSON文件内容方案
核心思路:利用Blob触发器的内置参数直接获取目标文件
Blob触发器本身会自动捕获符合规则的新生成Blob,触发时会将该文件的流/对象直接注入到处理函数中,不需要手动根据时间戳去查找文件——不管文件名里的时间戳格式是什么,只要触发器的路径配置正确,就能精准拿到当日的新JSON文件。
常见技术栈的实现示例
1. C#(Azure Functions)
直接通过Stream或CloudBlockBlob参数获取文件内容:
public static void Run( [BlobTrigger("你的容器名/{name}", Connection = "AzureWebJobsStorage")] Stream blobStream, string name, ILogger log) { log.LogInformation($"正在处理文件: {name}"); // 读取JSON内容 using (var reader = new StreamReader(blobStream)) { string jsonContent = reader.ReadToEnd(); // 按需反序列化为业务模型 // var targetData = JsonSerializer.Deserialize<你的数据模型类>(jsonContent); } }
参数里的{name}会自动填充触发文件的完整名称,blobStream就是文件的数据流,直接读取即可。
2. Python(Azure Functions)
用func.InputStream获取文件流并解析JSON:
import azure.functions as func import json import logging def main(myblob: func.InputStream): logging.info(f"正在处理文件: {myblob.name}") # 读取并解析JSON json_content = myblob.read().decode('utf-8') target_data = json.loads(json_content) # 后续业务逻辑处理
myblob包含了触发文件的所有元数据和内容,调用read()就能拿到文件的字节流,解码后即可解析为JSON对象。
关键注意点
- 确保触发器的路径规则配置准确:比如指定正确的容器名,若文件存子目录,路径要写
容器名/子目录/{name};如果只想触发JSON文件,可把路径设为容器名/{name}.json,过滤非JSON文件。 - 处理大体积JSON文件时,优先用流的方式读取,避免一次性加载全量内容到内存,影响性能。
内容的提问来源于stack exchange,提问作者Ton
相关产品推荐
相关产品推荐

