如何使用Impala SQL将子字符串提取为新列

时间:2017-03-30 03:20:57

标签: sql impala

我想从一个表中的两列中提取名称,并将其与另一个表连接。如果名称在'名称'列是“未找到”,我想从“描述”中提取它。柱。

'说明'专栏将遵循3种模式:

  1. 找不到名字。名称:ab33c和客户端

    所以在这种情况下我想提取ab33c。

  2. 找不到名称j2fc_being:j2fc_being_decom_2017

    我想提取j2fc。

  3. 找不到名称w3fkk:摘要:

    我想提取w3fkk。

  4. 以下是我写的代码:

    SELECT inc.name, inc.Description, inc.new_name, srv.dv_category, srv.virtual,
    FROM ( 
    SELECT inc.name, inc.Description, 
    CASE 
      WHEN inc.name NOT LIKE 'NOT FOUND%' THEN inc.name
      WHEN inc.Description LIKE '%Name :%' THEN REGEXP_REPLACE(inc.Description, '.*Name :(.+)(\s).*','\1')
      WHEN inc.Description LIKE 'Name%being%' THEN REGEXP_REPLACE(inc.Description, '.*(\s)(.+)_.+','\1') 
      WHEN inc.Description LIKE 'Name%was%' THEN REGEXP_REPLACE(inc.Description, '.*(\s)(.+)(\s).+','\1') 
      ELSE inc.name
      END as new_name
    FROM incident inc
    ) inc
    LEFT JOIN server srv 
    ON inc.new_name = srv.dv_name
    

    上下文将是Impala SQL。 我可以获得一些如何提取的帮助吗?非常感谢你。

0 个答案:

没有答案