BODS:如何将一列中的长字符串拆分为新列中的多个段

2020-08-31 17:34发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

有一个问题,我需要解决此问题的帮助。

场景:

有一列长度为varchar(8000)的源列。 现在目标在一列中最多接受132个字符。 因此,如果输入列中的字符串大于132个字符,则必须按132个字符段的SEQUENCE分解字符串,并将其装入输出列(大小为varchar(132))。

例如:

如果输入在源列中为600个字符长。 然后,必须将该输入顺序分为5个输出列(132 + 132 + 132 + 132 + 72)。 前四列应分别包含132个字符,第五列应包含剩余的72个字符。

请大家尽快帮助我。 请帮助我为此构建自定义功能。

谢谢。

Samarth

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

有一个问题,我需要解决此问题的帮助。

场景:

有一列长度为varchar(8000)的源列。 现在目标在一列中最多接受132个字符。 因此,如果输入列中的字符串大于132个字符,则必须按132个字符段的SEQUENCE分解字符串,并将其装入输出列(大小为varchar(132))。

例如:

如果输入在源列中为600个字符长。 然后,必须将该输入顺序分为5个输出列(132 + 132 + 132 + 132 + 72)。 前四列应分别包含132个字符,第五列应包含剩余的72个字符。

请大家尽快帮助我。 请帮助我为此构建自定义功能。

谢谢。

Samarth

付费偷看设置
发送
6条回答
大道至简
1楼-- · 2020-08-31 18:10

您无法在自定义函数中解决此问题,因为DS函数仅返回单个值。

您可以通过在User_Defined转换中编写Python代码来解决此问题。

或者 在查询转换中分别映射所有输出列:

  • Col1:substr(source_column,1,132)
  • Col1:substr(source_column,133,132)
  • Col1:substr(source_column,265,132)
  • ...

无需任何iftheneles。 如果起始位置高于source_column长度,则结果为null。 如果段的长度小于132,则仅复制现有内容。

绿领巾童鞋
2楼-- · 2020-08-31 18:24
宇峰Kouji
3楼-- · 2020-08-31 18:30

8000个字符太长,如果您尝试将每个字符分解为132个字符,则会有大约60列用于存储数据。

如果您可以容纳60列,则可以检查每列的长度,并使用子字符串函数填充。

第1列-ifthenelse(length(source_column)> 132,SUBSTR(source_column,1,132),SUBSTR(source_column,1,length(source_column)))

第2列-ifthenelse(length(source_column)> 132 * 2,SUBSTR(source_column,132 + 1,132 * 2),SUBSTR(source_column,132 + 1,length(source_column)))

第3列-ifthenelse(length(source_column)> 132 * 3,SUBSTR(source_column,132 * 2 + 1,132 * 3),SUBSTR(source_column,(132 * 2)+1,length(source_column)))

....依此类推。

或者,您可能想看看执行任务的数据透视转换。

Haoba3210
4楼-- · 2020-08-31 18:32

上面Dirk给出的建议非常完美。

SAP砖家
5楼-- · 2020-08-31 18:28

您好,萨克森纳(Saxena),

我也有相同的要求。 您能告诉我您是如何在BODS中实现此功能的吗?

此致

KT

CJones
6楼-- · 2020-08-31 18:18

我编写了一个函数来实现它。 抱歉,此后我再也没有收到有关该线程的通知,并且现在已经登录。

一周热门 更多>