formato de fecha interpretado incorrectamente en Power BI (no es el mismo que en Excel, el archivo de origen)

Un usuario Pregunto ✅

chica_datos

Hola, tengo un problema al estandarizar el formato de fecha. Tengo las siguientes columnas en Excel (el archivo fuente).

1. 20181205 (formateado como General en Excel y representa el 5 de diciembre)

2. 12/4/2018 (formateado como Fecha en Excel y realmente es 4 de diciembre)

3. 22/11/2018 (formateado como General en Excel y representa el 22 de noviembre)

No puedo cambiar el archivo de Excel. Me pregunto cómo puedo estandarizar esto en Power BI, para verlo como:

1. 12/05/2018

2. 4/12/2018

3. 22/11/2018

Entonces, necesito el formato DD/MM/YYYY. Mi configuración regional está configurada en inglés (Reino Unido).

He intentado convertir directamente al tipo de fecha pero produce errores.

También traté de convertirlo a texto y luego usar Date.FromText() pero también produce errores.

¿Alguna sugerencia?

Gracias por adelantado.

az38

En respuesta a chica_datos

@datos_chica

lo siento, hubo un error en mi declaración.

prueba esto

=if 
Text.Contains([Date],"https://community.powerbi.com/") 
then 
#date(
Number.From(Text.Range([Date],Text.Length([Date])-4)),
Number.From(Text.Range([Date],Text.PositionOf([Date],"https://community.powerbi.com/",Occurrence.First)+1,Text.PositionOf([Date],"https://community.powerbi.com/",Occurrence.Last)-Text.PositionOf([Date],"https://community.powerbi.com/",Occurrence.First)-1 )),
Number.From(Text.Range([Date],0,Text.PositionOf([Date],"https://community.powerbi.com/",Occurrence.First))) 
)
else #date(Number.From(Text.Range([Date],0,4)),Number.From(Text.Range([Date],4,2)),Number.From(Text.Range([Date],6,2)))

después de eso, vaya a la cinta Transformar y establezca el tipo de Fecha como Fecha

en este momento no importa qué formato de fecha veas, presiona cerrar y aplicar

luego, en el modo de informe, elija su columna personalizada en el panel de campo y configure el tipo de formato como desee

no dude en felicitar las publicaciones útiles y marcar las soluciones como solución

jimmy801

En respuesta a chica_datos

Hola @Data_girl

Acabo de ver que marcó una publicación como solución, y me pregunto por qué usar estas declaraciones if completas, cuando haría esto

Date.FromText(Text.From([Date]), "de-DE")

como se indica en mi propuesta. deberia hacer exactamente lo mismo 🙂

Palanqueta

jimmy801

Hola @Data_girl

¿Tienes alguna lógica para transformar las fechas? Quiero decir, si en Excel tiene un formato de fecha, no hay problema. Podemos comprobar si la fila es una fecha. Pero para el restante? ¿Hay sólo dos variantes? AAAAMMDD y el DD/MM/AAAA o también hay otros para identificar? Si no, aquí un ejemplo de cómo funciona

let
    ImportExcel = #table({"Date"}, {{20181205}, {#date(2018,12,4)}, {"22/11/2018"}}),
    TranformToDate = Table.TransformColumns
    (
        ImportExcel,
        {
            {
                "Date",
                (dateint)=>
                if Value.Type(dateint)= type date then
                    dateint 
                    else
                    Date.FromText(Text.From(dateint), "de-DE"),
                type date
            }
        }
    )
in
    TranformToDate

Copie y pegue este código en el editor avanzado para ver cómo funciona la solución.

Si esta publicación ayuda o resuelve su problema, márquelo como solución (para ayudar a otros usuarios a encontrar contenido útil y reconocer el trabajo de los usuarios que lo ayudaron)
Los saludos también son buenos

Divertirse

Palanqueta

Puede que tengas que hacerlo en 2 partes.
duplicar la columna

convertir una columna a la fecha forzando los errores

Eliminar los errores dejando nulos

analizar la otra columna del texto

combine las columnas en una nueva columna personalizada

chica_datos

En respuesta a Matt Allington

fecha desorden.PNG

Entonces, la primera columna es la original (tal como se importó de Excel). La tercera fila tiene el formato «General» en el archivo de origen en lugar de Fecha.

La segunda columna está forzada a Fecha. Espero el 4 de diciembre en la segunda fila y el 22 de noviembre en la tercera fila.

La tercera columna está forzada a Texto y en la 4ª se extrae el texto. Todavía recibo el 12 de abril en lugar del 4 de diciembre.

Tengo 900 filas con tal desorden. Me gustaría appreaciate una pista ahora.

Gracias.

az38

En respuesta a chica_datos

@datos_chica

de todos modos, podría probar una nueva columna personalizada

= if 
Text.Contains([Date],"https://community.powerbi.com/") 
then 
#date(
Number.From(Text.Range([Date],Text.Length([Date])-4)),
Number.From(Text.Range([Date],Text.PositionOf([Date],"https://community.powerbi.com/",Occurrence.First)+1,Text.PositionOf([Date],"https://community.powerbi.com/",Occurrence.Last)-Text.PositionOf([Date],"https://community.powerbi.com/",Occurrence.First)-1 )),
Number.From(Text.Range([Date],0,Text.PositionOf([Date],"https://community.powerbi.com/",Occurrence.First))) 
)
else #date(Number.From(Text.Range([Date],0,4)),1,1)

luego elija un formato de fecha para esta columna

no dude en felicitar las publicaciones útiles y marcar las soluciones como solución

LinkedIn

chica_datos

En respuesta a az38

@ az38, sus soluciones parecen ser las más cercanas a lo que necesito. Gracias por el esfuerzo. ¿Podría decirme cómo puedo hacer que la otra parte sea «más suelta»? Lo necesito para reconocer que 20181205 es AAAAMMDD y extraerlo en la forma DD/MM/AAAA.

Muchas gracias.

jimmy801

En respuesta a chica_datos

Hola @Data_girl

Acabo de ver que marcó una publicación como solución, y me pregunto por qué usar estas declaraciones if completas, cuando haría esto

Date.FromText(Text.From([Date]), "de-DE")

como se indica en mi propuesta. deberia hacer exactamente lo mismo 🙂

Palanqueta

chica_datos

En respuesta a jimmy801

Bueno, lo acabo de comprobar. Realmente lo hace Sin embargo, ¿por qué usa «de-DE»?

jimmy801

En respuesta a chica_datos

Hola

Para forzar a Power Query a usar el estándar alemán, ya que los tres ejemplos muestran los estándares alemanes.

Palanqueta

chica_datos

En respuesta a jimmy801

Gracias a los dos @Jimmy801 y @az38. Fuiste muy útil.

@ Jimmy801, ¿podría proporcionar un enlace a qué formato de fecha es específico de qué país y cómo lo interpreta Power BI? ¿Hay alguna documentación que pueda respaldar su declaración? Espero que mi pregunta no esté fuera de tema.

Muchas gracias.

jimmy801

En respuesta a chica_datos

Hola @Data_girl

estos códigos están obligando a power query a utilizar los formatos del país indicado. Así que solo verifique cómo este país muestra fechas, horas, monedas, etc. y estará bien.

Palanqueta

az38

En respuesta a chica_datos

@datos_chica

lo siento, hubo un error en mi declaración.

prueba esto

=if 
Text.Contains([Date],"https://community.powerbi.com/") 
then 
#date(
Number.From(Text.Range([Date],Text.Length([Date])-4)),
Number.From(Text.Range([Date],Text.PositionOf([Date],"https://community.powerbi.com/",Occurrence.First)+1,Text.PositionOf([Date],"https://community.powerbi.com/",Occurrence.Last)-Text.PositionOf([Date],"https://community.powerbi.com/",Occurrence.First)-1 )),
Number.From(Text.Range([Date],0,Text.PositionOf([Date],"https://community.powerbi.com/",Occurrence.First))) 
)
else #date(Number.From(Text.Range([Date],0,4)),Number.From(Text.Range([Date],4,2)),Number.From(Text.Range([Date],6,2)))

después de eso, vaya a la cinta Transformar y establezca el tipo de Fecha como Fecha

en este momento no importa qué formato de fecha veas, presiona cerrar y aplicar

luego, en el modo de informe, elija su columna personalizada en el panel de campo y configure el tipo de formato como desee

no dude en felicitar las publicaciones útiles y marcar las soluciones como solución

chica_datos

En respuesta a az38

desorden de citas 2.PNG

Entonces, esto es lo que obtengo cuando aplico la sintaxis, parece que ahora obtengo el 4 de diciembre, pero la primera fila se interpreta de manera inesperada.

jimmy801

En respuesta a chica_datos

Hola @Data_girl

¿Ya probaste mi solución? Seguro que sería posible aplicar la misma lógica a una nueva columna.

Palanqueta

chica_datos

En respuesta a jimmy801

desorden de citas 3.PNG

Hola @ Jimmy801, lo hice. Aunque obtengo la solución que quiero, la veo tres veces. También destruyo mi conjunto de datos original con el que estoy trabajando.

chica_datos

En respuesta a chica_datos

Por cierto, @Jimmy801. Funciona solo para los datos de muestra que proporcioné. No funciona en mi conjunto de datos original. Lo acabo de comprobar dos veces.

jimmy801

En respuesta a chica_datos

Hola

Por lo tanto, le pregunté si hay alguna otra lógica en su columna. Como también dije que la lógica también podría aplicarse a una nueva columna.

Adiós

Palanqueta

az38

En respuesta a chica_datos

Hola @Data_girl

¿Hay 3 columnas diferentes o la única columna con diferentes formatos de fecha como valores?

no dude en felicitar las publicaciones útiles y marcar las soluciones como solución

chica_datos

En respuesta a az38

Es solo uno.

Deja un comentario

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