#excel #powerbi #powerquery
Вопрос:
Я пытаюсь объединить дату и время, добавив пользовательский столбец с данными даты/времени (например, 2021-09-01 18:00:00). Пытаюсь достичь этого с помощью следующего кода:
[date] and " " and [time]
но в итоге я получаю ошибку из названия. Я не вижу ничего плохого в строке формул:
= Table.AddColumn(#"CreateTime naming", "Custom", each [date] and " " and [time])
До этого я проделал очень похожую операцию с датой и временем, используя ту же структуру кодовой фразы, что и выше, и это сработало. Затем я попытался настроить его для указанной операции, и это не удалось.
Сообщение об ошибке, которое я получаю, выглядит так:
Expression.Error: We cannot convert the value #date(2021, 9, 2) to type Logical.
Details:
Value=2021-09-02
Type=[Type]
Не могли бы вы помочь мне решить эту проблему?
Комментарии:
1. Вы не используете
and
для объединения, этоamp;
2. Если это фактические дата и время, вам сначала нужно будет преобразовать их в текст.
3. Что вы подразумеваете под «объединением»? Какие типы данных содержатся в этих столбцах? Какого типа данных вы ожидаете получить в результате?
4. Кроме того, вы получаете эту ошибку, потому
and
что это логический оператор, возвращающий логическоеand
из двух логических выражений. Вы получили бы аналогичный результат с любым нелогичным аргументом до или послеand
5. Вы тоже убрали это место? Отображение только части вашего кода, как здесь, так и в вашем вопросе, очень затрудняет вам помощь. Очевидно, что если время распознается как текст, вы неправильно ввели его ранее в коде.
Ответ №1:
Надеюсь, это обсуждение прояснит то, что я написал в комментариях.
Формула для использования:
#"Added Custom" = Table.AddColumn(#"Changed Type", "datetime",
each [date] amp; [time])
Я подозреваю, что вы пытаетесь использовать что-то вроде:
each [date] amp; " " amp; [time])
именно поэтому вы видите последнюю ошибку, о которой упоминаете в своих комментариях
Expression.Error: We cannot apply operator amp; to types Date and Text.
Details:
Operator=amp;
Left=9/1/2021
Right=
Если бы проблема была с [Time]
, ошибка была бы прочитана:
Expression.Error: We cannot apply operator amp; to types Text and Time.
Details:
Operator=amp;
Left=
Right=1:15:00 PM
Но amp;
оператор объединит тип даты и тип времени в тип даты-времени. Дальнейшее преобразование не требуется.
Например:
let
//data typed into a table
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WSkksSVXSUSrJzE1VitWJVrLUN9Q3MjAyBIoZGlsZmkIFjWCCZlYm5uhillamRkqxsQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t, Column2 = _t]),
#"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
//data types set to date and time for the respective columns
#"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"date", type date}, {"time", type time}}),
//create a datetime column
#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each [date] amp; [time], type datetime)
in
#"Added Custom"
Комментарии:
1. Да, проблема решена. Спасибо за ответ и обсуждение — поучительное, по крайней мере для меня.