Compartir a través de

映射数据流中的窗口函数

适用于:Azure 数据工厂 Azure Synapse Analytics

数据流在 Azure 数据工厂和 Azure Synapse 管道中均可用。 本文适用于映射数据流。 如果不熟悉转换,请参阅介绍性文章使用映射数据流转换数据

以下文章详细介绍了映射数据流中 Azure 数据工厂和 Azure Synapse Analytics 所支持的窗口函数。

窗口函数列表

以下函数仅可用于窗口转换。

窗口函数 任务
cumeDist CumeDist 函数计算某个值相对于分区中所有值的位置。 结果是前面的行数,或者等于当前行在分区中的顺序除以窗口分区中的总行数。 顺序中的任何关联值将计算为相同的位置。
denseRank 计算在窗口的 order by 子句中指定的一组值中的值排名。 结果是 1 加上前面的行数,或者等于当前行在分区中的顺序。 值不会在序列中生成空隙。 即使数据未排序,也能进行密集排名,并且会查找值的变化。
lag 获取当前行之前由第一个参数计算的 n 行的值。 第二个参数是要反向查找的行数,默认值为 1。 如果行数不多,则返回 NULL 值,除非指定了默认值。
lead 获取当前行之后由第一个参数计算的 n 行的值。 第二个参数是要正向查找的行数,默认值为 1。 如果行数不多,则返回 NULL 值,除非指定了默认值。
nTile NTile 函数将每个窗口分区的行分割为从 1 到 nn 桶。 桶值最大相差 1。 如果分区中的行数不能均匀分割成桶数,则余值将逐个分布在每个桶中,从第一个桶开始。 NTile 函数适合用于计算 tertiles、四分位数、十分位数和其他常见的摘要统计数据。 在初始化期间,该函数将计算两个变量:常规桶的大小将额外添加一行。 这两个变量都以当前分区的大小为基础。 在计算过程中,该函数将跟踪当前行号、当前桶号,以及发生桶更改的行号 (bucketThreshold)。 如果当前行号达到桶的阈值,则桶值将会加 1,阈值将按桶大小增加(如果当前桶已填充,则额外加 1)。
rank 计算在窗口的 order by 子句中指定的一组值中的值排名。 结果是 1 加上前面的行数,或者等于当前行在分区中的顺序。 值将在序列中生成空隙。 即使数据未排序,也能进行排名,并且会查找值的变化。
rowNumber 为窗口中的行分配一个顺序行号,从 1 开始。