如何在 powerquery 中将数字转换为序数形式

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

有没有办法在 powerquery 中将排名数字转换为序数形式。

例如排名:1, 2, 3, 4, 5, 31, 52 等。应显示为 1st, 2nd, 3rd, 4th, 5th, 31st 52nd。

谢谢!

excel powerquery data-analysis data-cleaning m
2个回答
3
投票

计算序数后缀的简单函数:

let
    Source = Table.FromList({1..100},Splitter.SplitByNothing(),{"Number"}),
    #"Added Suffix" = Table.AddColumn(Source, "Ordinal Suffix", each Record.FieldOrDefault([11="th",12="th",13="th"],Text.End(Text.From([Number]),2),Record.FieldOrDefault([1="st",2="nd",3="rd"],Text.End(Text.From([Number]),1),"th")), type text),
    #"Added Ordinal" = Table.AddColumn(#"Added Suffix", "Ordinal Number", each Text.Combine({Text.From([Number], "en-GB"), [Ordinal Suffix]}, ""), type text)
in
    #"Added Ordinal"

0
投票

https://gorilla.bi/power-bi/ordinal-numbers/

提供

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlSK1YlWMgKTxmDSBEyaQkQg0qZA+VgA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", Int64.Type}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each let
    Last2Characters = Text.End( Number.ToText( [Column1] ), 2 ),
    LastCharacter = Text.End( Number.ToText( [Column1]), 1 )
in
     if List.Contains( { "11", "12", "13" }, Last2Characters ) then "th"
else if LastCharacter = "1" then "st"
else if LastCharacter = "2" then "nd"
else if LastCharacter = "3" then "rd"
else "th"),
    #"Inserted Merged Column" = Table.AddColumn(#"Added Custom", "Merged", each Text.Combine({Text.From([Column1], "en-GB"), [Custom]}, ""), type text)
in
    #"Inserted Merged Column"
© www.soinside.com 2019 - 2024. All rights reserved.