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
Matt Allington
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
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
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
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
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.