scala - 如何显示所有用户在 spark scala (sql) 中的总数为 50%?
问题描述
假设我有数据 - 点击次数 (1) 表示用户点击了显示的广告
Users | clicks
A | 1
A | 1
B | 0
B | 0
C | 1
C | 0
D | 1
D | 0
E | 0
E | 0
我需要找出所有点击了 50% 展示广告的人
在我们的例子中,总点击次数 - 4 次,我需要关注输出
Users | clicks | percents
A | 2 | 50
解决方案
首先,总结一下点击次数。然后计算百分比,最后过滤所有大于 50% 的行:
val df = Seq(("A", 1), ("A", 1), ("B", 0), ("B", 0), ("C", 1), ("C", 0),
("D", 1), ("D", 0), ("E", 0), ("E", 0))
.toDF("Users", "clicks")
val allĆlicks = df.filter("Clicks > 0").count
df.groupBy("Users").sum()
.withColumn("percents", $"sum(clicks)"/allĆlicks*100)
.filter("percents >= 50")
.show()
印刷:
+-----+-----------+--------+
|Users|sum(clicks)|percents|
+-----+-----------+--------+
| A| 2| 50.0|
+-----+-----------+--------+
推荐阅读
- sql-server - 通过 JDBC 使用 kerberos 身份验证连接 SQL 服务器的源代码是什么?
- oracle - 在不同代码块pl sql中填充varray的最佳方法
- node.js - Node.js / Express:是否可以从同一模块为 2 个不同的路由创建 2 个单独的实例?
- mobile - Nuxtjs:将本地主机暴露给外部不起作用
- excel - Excel 公式:如果时间大于 23:30,则返回同一日期的 11:30
- android - 有什么方法可以从应用程序获取 Android Management API 设备 ID
- html - 如何在 snappy pdf 中分页后获取第二页中的哪些内容?
- javascript - 单击按钮1时如何隐藏div2并显示div1角度
- jquery - 如何在 javascript 类中使用 JQuery $(this)
- node.js - 从 Linux 安装时,npm 是否创建了 bin/*.cmd 文件?