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
v-danhe-msft
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
v-danhe-msft
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"
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
v-danhe-msft
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
v-danhe-msft
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