问题描述
我要在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 (将#修改为@)