在Power BI中使用Power Query填充车型年份空白



我有一个关于汽车型号年份的专栏。它包括带有连字符的数据(例如2016 - 2020)。我想将其更改为逗号分隔的列表(2016,2017,2018,2019,2020)。最后,我将按分隔符拆分它,并取消所有列的枢轴(或按行拆分)。我在谷歌上找不到任何帮助。如有任何帮助,不胜感激。

下面的代码以连字符的开始/结束年份开始(不要担心'Source'的定义…只是一个直接输入到PowerQuery编辑器中的表)。

关键步骤是分割破折号上的年份,然后根据用list分隔的开始年份和结束年份生成列表。生成函数(#"List of Years"线)。神奇的语句是:

each let start = [StartYear], end = [EndYear] in List.Generate(() =>Start, each _ <= end, each _ + 1)

'let start = [StartYear], end = [EndYear]'用于将所考虑的各自行的字段值复制到变量'start'和'end'中。这是因为. generate函数不能直接合并字段引用。然后,. generate函数的运行非常像for循环来创建一个值列表:初始值为'start',继续迭代直到列表值小于或等于'end',递增1。

let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjIwNNM1MjAyUIqNBQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t]),
#"Renamed Columns" = Table.RenameColumns(Source,{{"Column1", "HumanData"}}),
#"HumanData Type" = Table.TransformColumnTypes(#"Renamed Columns",{{"HumanData", type text}}),
#"Split Years" = Table.SplitColumn(#"HumanData Type", "HumanData", Splitter.SplitTextByDelimiter("-", QuoteStyle.Csv), {"StartYear", "EndYear"}),
#"Year Types" = Table.TransformColumnTypes(#"Split Years",{{"StartYear", Int64.Type}, {"EndYear", Int64.Type}}),
#"List of Years" = Table.AddColumn(#"Year Types", "ListOfYears", each let start = [StartYear], end = [EndYear] in List.Generate(() => start, each _ <= end, each _ + 1))
in
#"List of Years"

在列表形式中,您可以灵活地在PowerQuery中展开。

希望这对你有帮助:).

最新更新