是否可以通过使用 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 中的分隔符来提取字符串的一部分?的主要内容,如果未能解决你的问题,请参考以下文章

Hive 插入查询,如 SQL

通过 Spark SQL 读取 Hive Table 的最佳方法是啥?

Spark SQL(通过 HiveContext 进行 Hive 查询)总是创建 31 个分区

如何校验SQL查询结果是否准确

ANSI SQL PORTABILITY TO HADOOP HIVE 转换工具或宏

“order by”的 Hive、Impala、HBASE 和 SQL 比较