是否可以通过使用 Hive Script SQL 中的分隔符来提取字符串的一部分?
Posted
技术标签:
【中文标题】是否可以通过使用 Hive Script SQL 中的分隔符来提取字符串的一部分?【英文标题】:Is it possible to extract a part of the string by using the delimiter in Hive Script SQL? 【发布时间】:2021-09-04 06:05:36 【问题描述】:我已经分配了一个问题来按类别对每个 id 用户发生的问题进行分组。类别栏以“MainProblem@Detail1@Detail2”的形式记录。我想知道我是否可以使用hive脚本sql中的函数substring_index()通过以下代码提取主要问题和最后的detail2:
select
substring_index(category_out_line, "@",1) as MainProblem,
substring_index(category_out_line, "@",-1) as Detail2 `
from TableA;
【问题讨论】:
你真的试过你的代码吗? 我投票关闭一个不可重现的,因为你有一个关于有效 SQL 代码的问题,你只是问它是否有效。 【参考方案1】:您可以像在您的问题中那样使用 substring_index 来提取第一个和最后一个元素,但如果您需要提取所有元素,或者第二个、第三个等,拆分会更好:
split("MainProblem@Detail1@Detail2",'@')[0] --returns MainProblem
split("MainProblem@Detail1@Detail2",'@')[1] --returns Detail1
split("MainProblem@Detail1@Detail2",'@')[2] --returns Detail2
【讨论】:
以上是关于是否可以通过使用 Hive Script SQL 中的分隔符来提取字符串的一部分?的主要内容,如果未能解决你的问题,请参考以下文章
通过 Spark SQL 读取 Hive Table 的最佳方法是啥?
Spark SQL(通过 HiveContext 进行 Hive 查询)总是创建 31 个分区