gpt4 book ai didi

text - powerquery 按可变字段长度拆分列

转载 作者:行者123 更新时间:2023-12-02 01:34:03 24 4
gpt4 key购买 nike

在PowerQuery中我需要导入一个固定宽度的txt文件(每一行都是一些字段的串联,每个字段都有固定的特定长度)。当我导入它时,我得到一个表,其中包含一个包含 txt 行的单列,例如采用以下格式:

AAAABBCCCCCDDD

我想通过这种方式添加更多列:

Column1: AAAA
Column2: BB
Column3: CCCCC
Column4: DDD

换句话说,组成源列的字段的长度是已知的,但所有字段的长度并不相同(在上面的示例中,长度为:4、2、5、3)。

我想使用“拆分列”>“按字符数”实用程序,但我一次只能插入一个长度,要获得所需的输出,我必须重复该过程 3 次,每次添加一列并使用“拆分列”>“按字符数”实用程序的“一次,尽可能左”选项。

我的真实案例有许多不同的行类型(文件)要导入和转换,每个行类型(文件)都有超过 20 个字段,因此需要较少的手动方法;我想以某种方式指定记录结构(每个字段的长度)并自动拆分行:)

可能需要一些 M 代码,我对此一无所知:谁能指出正确的方向?

谢谢!

最佳答案

使用以下公式创建查询。我们将此查询称为 SplitText:

let    SplitText = (text, lengths) =>     let        LengthsCount = List.Count(lengths),        // Keep track of the index in the lengths list and the position in the text to take the next characters from. Use this information to get the next segment and put it into a list.        Split = List.Generate(() => {0, 0}, each _{0} < LengthsCount, each {_{0} + 1, _{1} + lengths{_{0}}}, each Text.Range(text, _{1}, lengths{_{0}}))    in        Split,    // Convert the list to a record to     ListToRecord = (text, lengths) =>     let        List = SplitText(text, lengths),        Record = Record.FromList(List, List.Transform({1 .. List.Count(List)}, each Number.ToText(_)))    in        Recordin    ListToRecord

然后,在您的表格中,添加一个使用此公式的自定义列:

每个 SplitText([Column1], {4, 2, 5, 3})

第一个参数是要拆分的文本,第二个参数是要拆分的长度列表。

最后,展开该列以将拆分文本值放入您的表格中。您可能想要重命名这些列,因为它们将被命名为 1、2 等。

关于text - powerquery 按可变字段长度拆分列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32247086/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com