Преобразовать текстовую дату (21 марта 2020 года) в дд / мм / гггг - PullRequest
1 голос
/ 02 апреля 2020

Я импортировал таблицу Excel в PowerBI и пытаюсь преобразовать столбец даты из текстового формата (21 марта 2020 года, 00: 00: 000) в формат даты (21/03/2020).

К сожалению, когда я выбираю «определить тип», он выбирает только текст, а выбор «Дата» приводит к ошибке. Я удалил «, 00: 00: 000» из столбцов, но все еще получаю сообщение об ошибке.

У кого-нибудь есть предложения по преобразованию этого столбца в дд / мм / гггг?

Большое спасибо,

Ответы [ 2 ]

1 голос
/ 02 апреля 2020

После удаления , 00:00:000 вы можете использовать преобразование, подобное одному из них, чтобы удалить st часть в 21st, чтобы March 21st 2020 --> March 21 2020, который может быть автоматически преобразован в дату.

Это преобразование удаляет все символы, кроме пробела и цифр, после первого пробела:

each Text.BeforeDelimiter(_, " ") & Text.Select(_, {" ", "0".."9"})

При этом удаляются два символа слева от последнего пробела:

each Text.ReplaceRange(_, Text.PositionOf(_, " ", Occurrence.Last)-2, 2, "")

Полный запрос (используя первый вариант) будет выглядеть так:

let
    Source = <Your Data Source>,
    Remove00 = Table.TransformColumns(Source, {{"DateText", each Text.BeforeDelimiter(_, ","), type text}}),
    StripOrdinal = Table.TransformColumns(Remove00, {{"DateText", each Text.BeforeDelimiter(_," ") & Text.Select(_, {" ","0".."9"}), type text}}),
    TextToDate = Table.TransformColumnTypes(StripOrdinal,{{"DateText", type date}})
in
    TextToDate
0 голосов
/ 02 апреля 2020

Вы можете использовать этот скрипт PowerQuery:

let
    Source = Excel.Workbook(File.Contents("Dates.xlsx"), null, true),
    Sheet1_Sheet = Source{[Item="Sheet1",Kind="Sheet"]}[Data],
    #"Changed Type" = Table.TransformColumnTypes(Sheet1_Sheet,{{"Column1", type text}}),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Changed Type", "Column1", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), {"Column1.1", "Column1.2", "Column1.3"}),
    #"Added Month" = Table.AddColumn(#"Split Column by Delimiter", "Month", each if [Column1.1] = "January" then 1 else if [Column1.1] = "February" then 2 else if [Column1.1] = "March" then 3 else if [Column1.1] = "April" then 4 else if [Column1.1] = "May" then 5 else if [Column1.1] = "June" then 6 else if [Column1.1] = "July" then 7 else if [Column1.1] = "August" then 8 else if [Column1.1] = "September" then 9 else if [Column1.1] = "October" then 10 else if [Column1.1] = "November" then 11 else if [Column1.1] = "December" then 12 else 0),
    #"Added Day" = Table.AddColumn(#"Added Month", "Day", each Text.Select([Column1.2], {"0".."9"})),
    #"Removed Columns" = Table.RemoveColumns(#"Added Day",{"Column1.1", "Column1.2"}),
    #"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Column1.3", "Year"}}),
    #"Changed Type2" = Table.TransformColumnTypes(#"Renamed Columns",{{"Year", Int64.Type}, {"Month", Int64.Type}, {"Day", Int64.Type}}),
    #"Inserted Merged Column" = Table.AddColumn(#"Changed Type2", "Date", each Text.Combine({Text.From([Day], "de-DE"), "/", Text.From([Month], "de-DE"), "/", Text.From([Year], "de-DE")}), type text),
    #"Changed Type3" = Table.TransformColumnTypes(#"Inserted Merged Column",{{"Date", type date}}),
    #"Removed Columns2" = Table.RemoveColumns(#"Changed Type3",{"Year", "Month", "Day"})
in
    #"Removed Columns2"

Преобразование в окончательный формат данных зависит от ваших локальных настроек и обычно выполняется вне PowerQuery.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...