让决策更智能
新一代智能数据分析平台

如何在去重计数函数中实现开窗

观小策发表于:2021年10月09日 17:11:52更新于:2021年10月11日 11:09:45

问题描述:

在ETL/卡片中进行去重计数的计算,若是常规开窗就会报错。

常规MYSQL去重函数:count(distinct(xxx)),但是基于此无法开窗。

00161615976ddfe33f9074c2bbaf704

产生原因:

在spark语法中不支持count(distinct(xxx))的开窗。

解决方法:

①去重计数:

size(collect_set([字段])over(partition by [分组列名]))

②计数(不去重):

size(collect_list([字段])over(partition by [分组列名]))



回复(2)

  • lantkin

    开窗 是啥意思?

  • 观小策

    开窗函数用于为行定义一个窗口(这里的窗口是指运算将要操作的行的集合),它对一组值进行操作,能够在同一行中同时返回基础行的列和聚合列。

    引用 lantkin 的回复:

    开窗 是啥意思?

您需要登录后才可以回复