sql - 是否可以选择找出具有重复数据的 spark 内部表列值
问题描述
我正在尝试找出 spark 内部表中的行,其中name列中有重复的数据。例如,考虑以下数据集,其中名称列中有重复的文本。我试图找到这些行并删除重复的数据。
Input data
Id Name
1 dil dil
2 lid
3 tik tok
4 tik tik
Expected output data
Id Name
1 dil
2 lid
3 tik tok
4 tik
但在某些情况下,我有某些名称,其中也有 3 个部分,如下所示abc def ghi
。作为abc def ghi abc def ghi
. 所以我无法在那些场景中找到模式
解决方案
您可以匹配重复名称的正则表达式,并且只提取第一次出现:
df.show(truncate=False)
+---+---------------------------+
|Id |Name |
+---+---------------------------+
|1 |dil dil |
|2 |lid |
|3 |tik tok |
|4 |tik tik |
|5 |dileep vikram dileep vikram|
|6 |abc def ghi abc def ghi |
|7 |dileep vikram dileep |
+---+---------------------------+
df.createOrReplaceTempView('df')
result = spark.sql(r"""
select Id, case when length(Name2) = 0 then Name else Name2 end Name
from (
select Id, Name, regexp_extract(Name, '(.*)\\s+\\1+', 1) Name2
from df
)
order by Id
""")
result.show()
+---+--------------------+
| Id| Name|
+---+--------------------+
| 1| dil|
| 2| lid|
| 3| tik tok|
| 4| tik|
| 5| dileep vikram|
| 6| abc def ghi|
| 7|dileep vikram dileep|
+---+--------------------+
推荐阅读
- sas - 如何使用 SAS 数组创建编号变量
- vue.js - 跨标签的 Vue 和 Vuex 实例
- reactjs - 如何验证 Firebase 存储中的扩展类型?
- python - 为什么我使用 python 构建的 Webscraper 在应该返回抓取的数据时返回一个空列表?
- sql - 解析json对象键值postgresql的文本
- python - ImageDataGenerator 提供(几乎)不可见的图像
- sql - 访问计数器的 Sql 查询未按预期工作
- macos - 如何为图片制作动画以创建视频?
- python - Keras Tensorflow 自定义层仅调用一次
- svg - 在 d3 圆环图中对闭合路径的边缘进行四舍五入