范围内每个值从单行到单独行的单独数字范围值

问题描述 投票:0回答:1

我有一个 CSV,其中一个字段的数值为字符串。其中一些值是数字范围[例如30-34]。对于此字段中具有范围值的行,我需要将范围值拆分为具有该范围中的唯一值的单独的单独行。我不知道该怎么做,也不知道如何用这个词来搜索合适的答案:-(

我做了一些基础研究,这些研究导致了枢轴阶段,但教学视频更多的是为了将水平列减少为行。我最初认为 Transform 阶段循环可能有效,但我无法确定所需的逻辑。

datastage
1个回答
0
投票

使用 Transformer 阶段和循环条件是正确的答案。 我的文件包含一个我们称之为“代码”的字段。该字段中大部分是数字值,但有时会有诸如“33-35”之类的数字范围来表示该范围内所有代码的相同其他字段值。这就是供应商创建文件的方式。为了我们的使用,我们需要所有用它们自己的记录表示的唯一代码。

首先,我创建了一个名为 NumOfCodes 的阶段变量,并使用以下推导来计算所表示的单个值的数量:

IF 索引(DSLink15.Code,'-',1) > 0 THEN (字段(DSLink15.Code,'-',2) - 字段(DSLink15.Code,'-',1) +1) ELSE 1

然后在循环条件中,我将 while 推导设置为 '@ITERATION <= NumOfCodes' so that we'll loop for each code value. I created a loop variable called DerivedCode. Then used the following derivation to calculate the correct code value for the given iteration:

IF 索引(DSLink15.Code,'-',1) < 0 THEN DSLink15.Code ELSE IF @ITERATION = 1 THEN Field(DSLink15.Code,'-',1) ELSE (Field(DSLink15.Code,'-',1) + (@ITERATION - 1))

最后,我使用循环变量来填充我的输出代码字段。

© www.soinside.com 2019 - 2024. All rights reserved.