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

如何在Azure Synapse中对同结构多Parquet文件进行动态透视

动态模板Parquet文件透视处理方案

步骤1:获取动态模板元数据列表

  • 使用Get Metadata活动,数据源指向根路径Container/,选择Child items字段,获取所有子目录(即各模板名称)。
  • 若存在非模板目录,用Filter活动筛选出符合模板命名规则的目录(比如前缀匹配、排除固定杂项目录)。

步骤2:Foreach循环遍历处理每个模板

  • 将Foreach的Items设为@activity('Get Metadata').output.childItems,根据资源情况开启并行处理(比如设置并行数为5)。
  • 循环内核心流程:
    1. 参数化数据集:创建Parquet数据集,把Template、Year、Month设为参数。在Foreach中,用@item().name作为Template参数值;若需遍历该模板下的所有年月,可嵌套Get Metadata获取子目录,再用内层Foreach处理每个年月。
    2. 数据流透视操作:
      • 数据源选用参数化的Parquet数据集,开启Recursively读取子目录,确保加载当前模板下所有年月的Parquet文件。
      • 添加Pivot转换:
        • 透视键选择AttName,确保字段为字符串类型。
        • 聚合列选择需要透视的数值字段(如AttValue),根据业务需求选First(单值场景)或Sum(多值聚合场景)。
        • 开启Allow schema drift,自动适配不同模板的AttName差异。
      • 参数化目标存储路径,比如Container/Processed/Template@{item().name}/Year@{year}/Month@{month},保持与源一致的分区结构。

步骤3:新模板自动触发(可选)

  • 若需实时处理新生成的模板,用Event Grid触发Pipeline,监听Blob存储的目录创建事件,将新模板名称作为参数传入,避免全量遍历。

常见问题修复

  • 同一数据流失败:大多是不同模板的AttName schema差异导致,需在源转换开启Allow schema drift,并设置Infer drifted column types为true。
  • Foreach参数传递错误:检查@item().name是否正确指向模板目录名,嵌套年月遍历时确保内层循环的参数引用正确。
  • Parquet读取异常:确认数据集的Compression type与源文件一致,开启递归读取子目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:20:06