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

如何在Azure Data Flows的聚合转换中计算中位数?

在Azure Data Flows中实现中位数计算

Azure Data Flows的聚合转换确实没有内置中位数函数,你可以通过以下两种实用方法实现:

方法一:窗口转换+筛选+聚合组合实现

这是最易理解的分步实现方式:

  1. 给数据流添加窗口转换,按需设置分组键(无需分组就留空)。
  2. 在窗口的排序规则里,对需要计算中位数的数值列设置升序/降序排序。
  3. 添加两个窗口计算列:
    • 统计分组内总行数:count(1),命名为total_rows
    • 标记每行在排序后的位置:row_number(),命名为row_pos
  4. 接一个筛选转换,根据总行数奇偶性设置筛选条件:
    • 奇数行:row_pos == (total_rows + 1)/2
    • 偶数行(取中间两数的平均值):row_pos == total_rows/2 OR row_pos == total_rows/2 + 1
  5. 最后用聚合转换,保留原分组键(如果有),对筛选后的数值列取平均值(偶数场景)或直接取值(奇数场景),得到最终中位数。

方法二:直接使用百分位函数

Azure Data Flows支持percentile_cont和percentile_disc两个百分位函数,可直接在聚合转换中使用:

  • 连续型中位数(偶数行自动取中间两数的平均值):
    percentile_cont(0.5) within group (order by your_numeric_column)
    
  • 离散型中位数(返回数据集中存在的中间位置实际值):
    percentile_disc(0.5) within group (order by your_numeric_column)
    

替换your_numeric_column为你要计算的数值列名,直接把这段表达式作为聚合列的计算逻辑即可。

小提示:percentile_cont适合连续数值场景,percentile_disc更适合离散分类数值的中位数计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 08:25:17