【发布时间】:2021-05-16 07:46:41
【问题描述】:
我的数据如下所示:
| date | id | name | version | assetIDs |
|------------| -------------| -----------|-----------|---------------------------------------------------------------------|
| 2021-02-11 | com.example1 | example1 | 1.2.3 |["4er6d99j","43mdmdm","234ds234","w23432s","sdfdsfds","32erwer"] |
| 2021-02-11 | com.example2 | example2 | 2.3.4 |["3er6d99j","43mdmdm","MMMM234","werewer","MMM3333","dssdsssM"] |
| 2021-02-11 | com.example3 | example3 | 2.3.4 |["3er6d99j","43mdmdm","MMMM234","YYYY2222","mmmm3444","yy2222"] |
| 2021-02-11 | com.example4 | example4 | 2.3.4 |["3er6d99j","43mdmdm","MMMM234","222sdsss","fffff3333","ffffffff"] |
| 2021-02-11 | com.example5 | example5 | 2.3.4 |["3er6d99j","43mdmdm","MMMM234","Y222222","YYYYJJJJ2222","DJDDJSJ2"] |
| 2021-02-11 | com.example6 | example6 | 2.3.4 |["3er6d99j","43mdmdm","MMMM234","Ydddddd","ssdfdfdfd","sdfdwsfw"] |
根据assetIDs 中的字符串,我需要能够再拥有两列,一列lowerCaseCount,一列upperCaseCount。
最终结果将是两个额外的列,每个 id 中包含小写和大写字符串数量。
我已经开始这样做了,但这并没有给我预期的结果:
with data as (
select date, id, name, version, explode(assetIDs) as assetids
from assets_table
)
select dt.data, dt.id, dt.name dt.version, count(UPPER(assetids)) as upperCount, count(LOWER(assetids)) as lowerCount, as.assetids
from data dt
inner join assets_table as on dt.id = as.id
group by 1,2,3,4,7
这只是返回字符串的数量,所以大写和小写列的总数
我怎样才能以最好的方式做到这一点?我可以在 Scala、Python 或/和使用 SQL 中做到这一点,就像我使用 databricks 一样。
【问题讨论】:
标签: scala apache-spark pyspark apache-spark-sql