Un error en Date.EndOfMonth que resulta en el inicio del próximo mes

Un usuario Pregunto ✅

justin777

Hola, cualquier persona que experimente un error al usar Date.EndOfMonth en PowerQuery M.

Estaba trabajando en un informe por alguna razón, no obtengo los resultados que necesitaba, después de algunas horas de pelar cada parte del informe, probé la precisión de EndOfMonth

Aquí está el código de muestra que uso para probar:

    #"Added Custom1" = Table.AddColumn(#"Grouped Rows", "Custom1", each DateTimeZone.FromText("2011-02-21T12:30:00-08:00")),
    #"Added Custom" = Table.AddColumn(#"Added Custom1", "Custom", each Date.EndOfMonth([Custom1]))

Aquí está el resultado real:

2011-03-01 12:00:00 AM -08:00

Aquí está el resultado esperado:

2011-02-28T23:59:59-08:00  

Este ejemplo es de: https://docs.microsoft.com/en-us/powerquery-m/date-endofmonth

En respuesta a justin777

Hola @justin777,

El equipo de PG me ha respondido de la siguiente manera:

Lo que el cliente está viendo en realidad se debe al redondeo que se produce cuando se muestran los valores en el Editor PQ (que imita el comportamiento de visualización de redondeo de Excel). Si hace clic en la celda más a la derecha, verá el valor completo:

2011-02-28T23:59:59.9999999-08:00

Si convierte la columna más a la derecha en una fecha, debería ver el mismo resultado que en Prueba.

Espero que pueda ayudarte.

Saludos,

daniel el

Hola @justin777,

Según mi prueba, podría funcionar de mi lado con el siguiente código en el editor de consultas:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjIwtNA30jc0UYqNBQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Date = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Date", type date}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each Date.EndOfMonth([Date]))
in
    #"Added Custom"

1 PNG

Saludos,

daniel el

justin777

En respuesta a v-danhe-msft

Hola v-danghe-msft,

Parece que descomprimirlo de Binary funciona bien, pero en mi caso de uso de usar el método en DateTime daría lugar a una salida incorrecta. Incorporé tu código al mío:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjIwtNA30jc0UYqNBQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Date = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Date", type date}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each Date.EndOfMonth([Date])),
    #"Added Custom1" = Table.AddColumn(#"Added Custom", "Custom1", each DateTimeZone.FromText("2011-02-21T12:30:00-08:00")),
    #"Added Custom2" = Table.AddColumn(#"Added Custom1", "Custom2", each Date.EndOfMonth([Custom1]))
in
    #"Added Custom2"

Sigue siendo el mismo resultado:

Me di cuenta de que obtengo un resultado incorrecto porque estoy usando DateTime y el método Date.EndOfMonth no admite el tipo de datos correctamente.

Entonces, cuando cambio el tipo de datos a Fecha, ahora da la Fecha de finalización correcta.

Sugiero cambiar el ejemplo en: https://docs.microsoft.com/en-us/powerquery-m/date-endofmonth

Dado que el ejemplo es, lo que conduciría a un resultado incorrecto como se ve en la captura de pantalla anterior:

dateTime = DateTimeZone.FromText("2011-02-21T12:30:00-08:00");   
Date.EndOfMonth(dateTime) equals 2011-02-28T23:59:59-08:00  

En respuesta a justin777

Hola @justin777,

El equipo de PG me ha respondido de la siguiente manera:

Lo que el cliente está viendo en realidad se debe al redondeo que se produce cuando se muestran los valores en el Editor PQ (que imita el comportamiento de visualización de redondeo de Excel). Si hace clic en la celda más a la derecha, verá el valor completo:

2011-02-28T23:59:59.9999999-08:00

Si convierte la columna más a la derecha en una fecha, debería ver el mismo resultado que en Prueba.

Espero que pueda ayudarte.

Saludos,

daniel el

En respuesta a justin777

Hola @justin777,

Le he preguntado al equipo de PG por este problema y le responderé tan pronto como reciba información útil.

Saludos,

daniel el

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *