如果我理解正确,输入字符串中的 month 不是零填充的(导致输入字符串的长度为 7 或 8)。
可能值得创建一个像下面这样的小函数,它将处理变化的长度,然后尝试根据假定的字符位置解析日期。
ParseDate = (someText as text) as date =>
let
zeroPadded = Text.End("0" & someText, 8),
yearParsed = Text.End(zeroPadded, 4),
monthParsed = Text.Start(zeroPadded, 2),
dayParsed = Text.Middle(zeroPadded, 2, 2),
dateParsed = #date(Number.From(yearParsed), Number.From(monthParsed), Number.From(dayParsed))
in dateParsed,
然后,您可以在转换现有列或添加新列时调用它。举个例子:
let
ParseDate = (someText as text) as date =>
let
zeroPadded = Text.End("0" & someText, 8),
yearParsed = Text.End(zeroPadded, 4),
monthParsed = Text.Start(zeroPadded, 2),
dayParsed = Text.Middle(zeroPadded, 2, 2),
dateParsed = #date(Number.From(yearParsed), Number.From(monthParsed), Number.From(dayParsed))
in dateParsed,
someTable = Table.FromColumns({{"1022018", "05242019", "12282026"}}, type table [toParse = text]),
transformedColumn = Table.TransformColumns(someTable, {{"toParse", ParseDate, type date}}),
addedColumn = Table.AddColumn(someTable, "parsed", each ParseDate([toParse]), type date)
in
addedColumn
给出: