ana22
贡献者

如何在破折号( - )符号之前删除文本

你好,

我有一个订单项,需要在破折号之前删除所有这些( - )。有没有办法做到这一点?

当前的 预期的
XXX -123 123
XX -1234 1234

谢谢!

1个接受解决方案

接受的解决方案
Kirillkuznetsov
经过认证的Anaplanner大师

@ana22

MID()和FIND()公式将在这里提供帮助:

预期=中间(当前,查找(“ - ”,电流)+1,

其中 - 最大字符数可能会在破折号符号之后出现。

问候,Kirill Kuznetsov
Advanced,LLC

在原始帖子中查看解决方案

3个答复3
Kirillkuznetsov
经过认证的Anaplanner大师

@ana22

MID()和FIND()公式将在这里提供帮助:

预期=中间(当前,查找(“ - ”,电流)+1,

其中 - 最大字符数可能会在破折号符号之后出现。

问候,Kirill Kuznetsov
Advanced,LLC
ana22
贡献者

谢谢!!有效!:lyly_smiling_face:
ryan_kohn
经过认证的Anaplanner大师

而解决方案提供了@kirillkuznetsov当然可以满足要求,也必须认识到,文本解析功能和文本系列项目通常很容易表现出最佳性能。该计划建议不要尽可能多地使用文本(请参阅规则2.02-042.03-02)。

我基于数据格式的猜测是数据来自外部系统。如果可能的话,请尝试在进入Anaplan之前将这些值解析到ELT层中,因为这将使Anaplan能够最佳地执行。

但是,如果不可能,我有一种替代方法可以表现得更好,尤其是如果您要导入的数据集很大。

为了提高此处的性能,您可以利用一个微妙的优势,即将其导入到数字构成订单项中时,将字母数字字段导入Anaplan的方式。实际上有一个有关社区的最新帖子对这个。

对于下面的示例,我将假设您希望最终输出的数字格式。让我们比较两个选项之间的性能。

选项1:文字操纵

将值作为文本导入,并使用查找,中间和值以获得最终结果。

蓝图:

ryan_kohn_0-1653951135566.png

网格视图:

ryan_kohn_1-1653951188398.png

选项2:字母数字导入为数字

导入为数字(由于上述巧妙的微妙而导致值为-123),然后使用ABS()将值转换为正。您也可以做价值*( - 1),但是我在这里选择ABS()作为额外的保障措施,以抵抗可能缺少连字符的值。

蓝图:

ryan_kohn_2-1653951417943.png

网格视图:

ryan_kohn_3-1653951468844.png

性能比较

我设置了一个基于最终结果的测试模型,该测试模型没有任何其他计算,并且我在CSV文件中嘲笑了一个1M项目的数据集,在上面的两个示例中使用了相同的文件。

使用简单的秒表测试:

选项1:9s

选项2:7s

因此,即使在这个简单的测试中,我们也可以看到,即使导入文件和最终结果完全相同,导入也将在第二种情况下运行更快。进一步注意到,当您在这些构造上构建更多下游逻辑时,性能问题可能会进一步复杂,因此我们希望对文本非常谨慎。文本总是会较慢,因此我们应该尽其所能避免它,在这种情况下,我们可以!