首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从十进制幂查询中拆分非数字

从十进制幂查询中拆分非数字
EN

Stack Overflow用户
提问于 2021-06-24 10:44:29
回答 2查看 458关注 0票数 0

使用power查询,我们可以将列拆分为非数字到数字的数据,如果有一个值,比如Lead 10要拆分为Lead10,那么这个方法很好,但是,如果该数字是十进制的话,也会以同样的方式拆分,例如Lead 20.5。使用拆分的非数字到数字的拆分--这是Lead 20. 5

我有下面的示例数据,我希望将其分割如下:

代码语言:javascript
复制
Lead 20.5 --> `Lead` `20.5`
No Data --> `null`
Arsenic 10 --> `Arsenic` `10`
Gold 50.55 --> `Gold` `50.55`
1,4-Dioxane 21 --> `1,4-Dioxane` `21`

在此之前,我使用了最正确的“拆分”,但是这会将No数据拆分成单独的单词。

任何关于如何实现这一目标的想法都将是伟大的。

更新1: 1,4-二恶烷

M码:

代码语言:javascript
复制
    let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}}),
    #"Split Column by Character Transition" = Table.SplitColumn(#"Changed Type", "Column1", 
        Splitter.SplitTextByCharacterTransition((c) => not List.Contains({"0".."9","."}, c), {"0".."9","."}), {"Column1.1", "Column1.2"})

in
     #"Split Column by Character Transition"
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-24 12:04:08

如何做到这一点取决于您的数据。

编辑

使用化学名称中的数字说明附加数据示例

算法

如果最后一个单词不是数字,则用NBSP space.

  • 替换空格,然后在最右边的
  • 上拆分

如果最后一个单词不是空格,我将使用自定义函数检查最后一个单词并修改字符串。

自定义函数 M代码:

输入为空白查询并重命名它:fnConvString

编辑以改进计算

代码语言:javascript
复制
//Rename this query "fnConvString"
(string as text) =>
let 
   lastWord = Text.AfterDelimiter(string," ",{0,RelativePosition.FromEnd}),
   lastIsNumber = try Value.Type(Number.FromText(lastWord)) = type number otherwise false,
   replSpace = if lastIsNumber = false then Text.Replace(string," ",Character.FromNumber(160)) else string
in 
   replSpace

Main MCode

编辑以简化没有添加列的代码

代码语言:javascript
复制
let
    Source = Excel.CurrentWorkbook(){[Name="Table29"]}[Content],
    addNBSP = Table.TransformColumns(Source,{"Column1", each fnConvString(_)}),
    #"Split Column by Delimiter" = Table.SplitColumn(addNBSP, "Column1", 
        Splitter.SplitTextByEachDelimiter({" "}, QuoteStyle.Csv, true), {"Column1.1", "Column1.2"}),
    #"Changed Type" = Table.TransformColumnTypes(
        #"Split Column by Delimiter",{{"Column1.1", type text}, {"Column1.2", type number}})
in
    #"Changed Type"

没有自定义函数的编辑

如果您希望不使用自定义函数,则可以将其作为Transform Operation__合并到主代码中:

没有自定义函数的M代码

代码语言:javascript
复制
let
    Source = Excel.CurrentWorkbook(){[Name="Table29"]}[Content],
    
    addNBSP = Table.TransformColumns(Source,{"Column1", each 
        let 
            lastWord = Text.AfterDelimiter(_," ",{0,RelativePosition.FromEnd}),
            lastIsNumber = try Value.Type(Number.FromText(lastWord)) = type number otherwise false,
            replSpace = if lastIsNumber = false then Text.Replace(_," ",Character.FromNumber(160)) else _
        in 
            replSpace
    }),

    #"Split Column by Delimiter" = Table.SplitColumn(addNBSP, "Column1", 
        Splitter.SplitTextByEachDelimiter({" "}, QuoteStyle.Csv, true), {"Column1.1", "Column1.2"}),
    #"Changed Type" = Table.TransformColumnTypes(
        #"Split Column by Delimiter",{{"Column1.1", type text}, {"Column1.2", type number}})
in
    #"Changed Type"
票数 2
EN

Stack Overflow用户

发布于 2021-06-24 12:01:54

在powerquery中,基于示例数据,看起来您可以在空格字符上拆分。

右击列。分裂列..。由发烧友..。太空..。拆分:最左边的分隔符

代码语言:javascript
复制
let  Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Split Column by Delimiter" = Table.SplitColumn(Source, "Column1", Splitter.SplitTextByEachDelimiter({" "}, QuoteStyle.Csv, false), {"Column1.1", "Column1.2"})
in  #"Split Column by Delimiter"

如果数据不喜欢这种方法,可以从alpha解析数字。

添加带有公式的自定义列

代码语言:javascript
复制
= Text.Remove([Column1],{"0".."9","."})

只获取文本部分,并添加第二个带有公式的自定义列

代码语言:javascript
复制
=try Text.Remove([Column1],Text.ToList(Text.Remove([Column1],{"0".."9","."}))) otherwise null

得到数字部分

样本全码

代码语言:javascript
复制
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Added Custom" = Table.AddColumn(Source, "Text", each Text.Remove([Column1],{"0".."9","."})),
#"Added Custom1" = Table.AddColumn(#"Added Custom", "Numeric", each try Text.Remove([Column1],Text.ToList(Text.Remove([Column1],{"0".."9","."}))) otherwise null)
in  #"Added Custom1"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68114241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档