cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Anonymous
Not applicable

Formato de fecha

Hola

Tengo un conjunto de datos que se actualiza todos los días y columnas con fechas en ellos, sin embargo, el formato de estas fechas cambia de vez en cuando. Por ejemplo, en algún momento toda la columna puede estar en el formato "MM/DD/AAAA", mientras que a veces el formato puede ser "DD/MM/AAAA". Nunca sé cuándo va a cambiar el formato, así que no puedo simplemente "Cambiar tipo" o "Cambiar tipo usando configuración regional". ¿Hay algún tipo de captura de errores que puedo hacer para cambiar el tipo usando la configuración regional si el tipo de cambio no funciona? Necesito 3 columnas para ser convertidas juntas.

¡Gracias!

5 REPLIES 5
edhans
Super User III
Super User III

Pruebe esto en Power Query @studentt1205

Esto convertirá todo el texto a fechas (formatear las fechas como texto primero, o simplemente eliminar cualquier tipo de cambio anterior para esa columna como PQ asumirá texto para archivos planos) y luego contar los errores. Si hay errores, se convertirá mediante una localización.

La forma en que funciona es que cuenta el número de errores en el paso anterior que tienen una conversión genérica Date.FromText([Date]). Si no hay errores, entonces lo deja en eso.

Si hay errores, cambia a una conversión de localización, Date.FromText([Date], "en-BS") que es inglés/Bahamas. Tendrás que elegir tu propia localización. La forma más fácil de hacerlo es hacerlo manualmente en una columna y luego ir a robar el código de localización nn-XX que genera PQ.

Hay un problema con este método. Si sus fechas son sólo unas pocas, es posible equivocarse por ejemplo, un montón de filas como 5/1/2020, 4/1/2020, 3/1/2020, etc. no generarán errores. En formato estadounidense, es sólo el 1 de mayo, el 1 de abril y el 1 de marzo, pero en Europa, es decir, el 5 de enero, el 4, 3 de enero.

Pero si ese es el caso, entonces no lo sabrá. Sin embargo, si más adelante importa más datos y obtiene 18/1/2020, cambiará el ENTIRE COLUMN en esa actualización al formato localizado.

Esto es lo que parece (utilicé otro conjunto de datos para jugar aquí)

2020-05-05 07_58_32-20200502 - Left Anti Join in Power Query - Power Query Editor.png

Coloque este código en una consulta en blanco:

1) En Power Query, seleccione Nuevo origen y, a continuación, Consulta en blanco
2) En la cinta inicio, seleccione el botón "Editor avanzado"
3) Retire todo lo que ve, luego pegue el código M que le he dado en ese cuadro.
4) Pulse Hecho

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("Zc87DsIwDIDhu2RGws84GQviFYSgpQIE6v2vgU2XSizxP3xyks8nga4B1wQEaZX6FyIOHqeh5Np7VNXioxhhmlbO84I/OkNoHpsnYw7O5AdK0RnbAo8HqbDzaG8l3nhkVj/NcvlppIVuo0E9xeqGInsPQuAYReaXIC/49Vznh3f7ynbwUGOJO7LBP78fVeXocWmi9gpeamw3Ifvnt21mfsYf3ob4CA5iMQg5TdMX", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Date = _t, #"Dimension 1" = _t, #"Dimension 2" = _t, #"Measure 1" = _t, #"Measure 2" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Date", type text}, {"Dimension 1", type text}, {"Dimension 2", type text}, {"Measure 1", Int64.Type}, {"Measure 2", Int64.Type}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", 
        each 
            if Table.RowCount(
                Table.SelectRowsWithErrors(
                    Table.AddColumn(#"Changed Type", "Custom", each Date.FromText([Date]))
                    )
                ) > 0 
            then Date.FromText([Date], "en-BS") 
            else Date.FromText([Date])
        )
in
    #"Added Custom"



Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling


Proud to be a Super User!

MCSA: BI Reporting
Anonymous
Not applicable

Hola @edhans,

Gracias, esto es muy útil. Sin embargo, el problema es con fechas como 4/1/2020 como usted mencionó. ¿Hay algo que se te ocurra para resolver eso?

No de la parte superior de mi cabeza. Si puede encontrar algún tipo de lógica de negocios, puedo ayudar con el lado de Power Query, pero no puedo pensar en una manera para que PQ solo sepa cuándo 4/1/2020 es el 4 de enero o el 1 de abril.



Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling


Proud to be a Super User!

MCSA: BI Reporting
v-yingjl
Community Support
Community Support

Hola @studentt1205 ,

Puede intentar utilizar format() por formatos de fecha y hora personalizados:

FORMAT(<value>, <format_string>)  

format.png

Consulte:

  1. Formatos de fecha y hora personalizados para la función FORMAT
  2. Formatos de fecha y hora predefinidos para la función FORMAT

Mejores looks,
Yingjie Li

Si este post ayuda, por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

amitchandak
Super User IV
Super User IV

@studentt1205 , Puede convertir una fecha DD/MM/AAAA en MM/DD/AAAA

date(year(DD__MM__YY[Version_Id],4)), month(mid(DD__MM__YY[Version_Id],4,2)) ,day(left(DD__MM__YY[Version_Id],2)))

Pero, ¿cómo identificaría qué formato es?

O tal vez todas las fechas están en formato DD/MM/AAAA es sólo por días <-12 , parece que es MM/DD/AAAA



Did I answer your question? Mark my post as a solution! Appreciate your Kudos!!
Dashboard of My Blogs !! YouTube Channel !! Connect on Linkedin

Proud to be a Super User!

Helpful resources

Announcements
PBI User Groups

Welcome to the User Group Public Preview

Check out new user group experience and if you are a leader please create your group!

MBAS Attendee Badge

Claim Your Badge & Digital Swag!

Check out how to claim yours today!

secondImage

Are You Ready?

Test your skills now with the Cloud Skills Challenge.

Top Solution Authors