Выражение.Ошибка: Мы не можем преобразовать значение #дата(2021, 9, 2) в тип Логический

#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. Да, проблема решена. Спасибо за ответ и обсуждение — поучительное, по крайней мере для меня.