Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
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!
Solved! Go to Solution.
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.
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI ReportingPruebe 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í)
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"
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI ReportingHola @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.
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI ReportingHola @studentt1205 ,
Puede intentar utilizar format() por formatos de fecha y hora personalizados:
FORMAT(<value>, <format_string>)
Consulte:
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.
@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
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
1 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
1 | |
1 | |
1 |