【问题标题】:How to split column in Power Query by the first space?如何按第一个空格拆分 Power Query 中的列?
【发布时间】:2017-02-10 15:59:37
【问题描述】:

我正在使用 Power Query 并且有一个名为 LandArea 的列;示例数据是“123.5 sq mi”。它是数据类型的文本。我想删除“平方英里”部分,所以我只有数字值 123.5。我尝试使用替换功能将“sq mi”替换为空白,但这不起作用,因为它会查看整个文本。所以我尝试使用拆分,在空间上拆分它,它在下面生成了这个公式,它确实创建了一个新列,但所有值都为 null。原来的列仍然有“123.5 sq mi”。

Table.SplitColumn(#"Reordered Columns1","LandArea",Splitter.SplitTextByDelimiter(" ", QuoteStyle.None),{"LandArea.1", "LandArea.2"})

仅在最左边的分隔符处拆分时:

Table.SplitColumn(#"Reordered Columns1","LandArea",Splitter.SplitTextByEachDelimiter({" "}, QuoteStyle.None, false),{"LandArea.1", "LandArea.2"})

我也尝试过更改为 QuoteStyle.Csv。知道如何让它工作吗?

【问题讨论】:

    标签: powerbi powerquery


    【解决方案1】:

    使用它来创建自定义列:

    = Table.AddColumn(
      #"Reordered Columns1",
      "NewColumn",
      each Text.Start([LandArea],Text.PositionOf([LandArea]," "))
    )
    

    更新: 每个人似乎都有“平方英里”

    = Table.AddColumn(#"Changed Type", "Custom", each Text.Replace([LandArea]," sq mi",""),type number)
    

    希望对你有帮助。

    【讨论】:

    • 这不起作用。我还尝试将其更改为使用 Text.Range 。它会创建一个新列,其中包含“错误”。我仍在尝试找出添加新列的正确公式,但仍然觉得拆分应该可以工作?
    • @Kelly,你得到什么错误?您的所有值都至少有一个空格吗?
    • 好问题,它们都有空格。每个似乎都有“平方英里”,原始数据中没有空值或空白。
    • 错误:Expression.Error:'count' 参数超出范围。详细信息:-1
    • 所以我更改了公式以将 Text.PositionOf 结果硬编码为 5,它给了我值。所以那里的某个地方正在计算一个超出 Text.PositionOf 范围的值...
    【解决方案2】:

    这是我最终使用的:

    Table.AddColumn(#"Reordered Columns1", "LandArea2", 
        each Text.Start([LandArea], Text.PositionOf([LandArea], "sq")-1))
    

    我避免尝试查找空格。

    【讨论】:

    • Position of 可以配置为只返回一个匹配项,例如 ` = Text.PositionOf( text, substring, Occurrence.First )` -- Occurrence.Last 也很有用
    猜你喜欢
    • 2020-09-03
    • 2022-01-22
    • 1970-01-01
    • 2023-02-21
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    • 1970-01-01
    相关资源
    最近更新 更多