在Netezza中用分隔符创建新行

问题描述

我要在Netezza中解决一个小问题。我将数据存储在具有多个值的单列中,我需要将其分成多行。我知道Netezza(我知道)中没有移调或枢轴函数,我过去不得不处理,但是我认为这有点不同。这是我的数据:

Record Number   Type                            Rules
TSK1-23764      2 rules participated in ticket  Rule 1;Rule 2;
TSK1-23765      2 rules participated in ticket  Rule 2;Rule 3;
TSK1-23766      2 rules participated in ticket  Rule 1;Rule 4;
TSK1-23767      3 rules participated in ticket  Rule 1;Rule 3;Rule 5;
TSK1-23768      4 rules participated in ticket  Rule 2;Rule 6;Rule 7;Rule 8

这是来源的性质,正在被提供给我的报告环境。我们的业务客户希望将这些事件分解出来,以便他们可以告知每个规则多少次警报,所以我想像这样进行分解:

Record Number   Type                            Rules
TSK1-23764      2 rules participated in ticket  Rule 1
TSK1-23764      2 rules participated in ticket  Rule 2
TSK1-23765      2 rules participated in ticket  Rule 2
TSK1-23765      2 rules participated in ticket  Rule 3
TSK1-23766      2 rules participated in ticket  Rule 1
TSK1-23766      2 rules participated in ticket  Rule 4
TSK1-23767      3 rules participated in ticket  Rule 1
TSK1-23767      3 rules participated in ticket  Rule 3
TSK1-23767      3 rules participated in ticket  Rule 5
TSK1-23768      4 rules participated in ticket  Rule 2
TSK1-23768      4 rules participated in ticket  Rule 6
TSK1-23768      4 rules participated in ticket  Rule 7
TSK1-23768      4 rules participated in ticket  Rule 8

根据要求:

  • 将每个匹配的规则细分到各自的行
  • 记录号可以重复,如上所示
  • 如果可能的话,我想避免使用人工案例陈述。我目前有28条要匹配的规则,但是它们可以并且可能还会添加更多规则,因此我不想创建任何手动维护问题

我们的一位数据工程师为我提供了一些代码,以展示如何针对这些数据进行计数,但是我无法真正扩展到此问题。他正在使用REGEXP_EXTRACT()像这样将其分解:

select REGEXP_EXTRACT(Rules,'[^;]+',1,1)  AS Rules,count(*) 
from rules_table
group by 1;

这只是抓住了这个数目,但我认为应该有可能将其扩展到我正在尝试做的事情。我还见过一些人,他们展示了自定义枢轴函数的示例,但是我不知道我是否需要这样做,或者在这种情况下该如何做。非常感谢您的帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...