【问题标题】:Split String and Mix with another string in redshift拆分字符串并与红移中的另一个字符串混合
【发布时间】:2017-10-31 09:39:32
【问题描述】:

我有两列,一列是描述,另一列对应的标签是红移表

description                  |  Tags
John Plays Football          |  name, Verb , object

我希望输出作为带有标签的描述

John name plays verb football object

对此的另一个补充是任何包含冒号 (:) 的描述我想在不删除的情况下分隔单词:

例如:

description                      |  Tags
Des:John Plays Football          |  constant,name, Verb, object

Output
Des: constant John name plays verb football object

还需要排除:冒号两边的数字规则,以确保时间是分开的(例如:10:10)

我不知道从哪里开始

【问题讨论】:

  • 嗨@Manu Mohan,我的回答有帮助吗?

标签: sql amazon-redshift


【解决方案1】:

您已在 Python 中创建 UDF 来执行 this 。

示例代码

create function f_py_conc (a srting, b srting)
 returns srting
stable
as $$
  c=a.split(" ")
  d=b.split(",")
  e =""
  for i in range(len(c))
    d=c[i]+" " +d[i]
  return e

$$ language plpythonu;

注意:Python 依赖于空间,因此该代码可能无法运行,因为它可能需要一些更改..

【讨论】:

    【解决方案2】:

    您实际上可以使用 Redshift 函数来实现这一点,特别是 split part 方法。我不确定这是否也能解决 : 问题,但请试一试,然后评论您下一步需要做什么。 这个想法是构建一个连接字段,将两个字段的所有不同部分组合起来。你可以这样做:

    select description, tags,  
    SPLIT_PART(description, ' ', 1) + ' ' + SPLIT_PART(tags, ',', 1) + ' ' +
    SPLIT_PART(description, ' ', 2) + ' ' + SPLIT_PART(tags, ',', 2) + ' ' +
    SPLIT_PART(description, ' ', 3) + ' ' + SPLIT_PART(tags, ',', 3)
    as description_with_tag 
    from table_name
    

    了解更多关于这个功能here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-08
      • 1970-01-01
      • 2018-12-11
      • 2020-03-12
      • 2020-09-25
      • 2022-07-01
      相关资源
      最近更新 更多