Join us for an expert-led overview of the tools and concepts you'll need to pass exam PL-300. The first session starts on June 11th. See you there!
Get registeredPower BI is turning 10! Let’s celebrate together with dataviz contests, interactive sessions, and giveaways. Register now.
Tengo un escritorio de Power BI que actualmente se conecta a un archivo CSV. Este archivo es para un informe que debe actualizarse mensualmente o adhoc según sea necesario. El archivo contiene cientos de registros que tiene el formato siguiente. Netdays es una calcuation dentro de Power Bi.
IDENTIFICACIÓN | Fecha de creación | Fecha de resolución | NetDays |
ID.1234 | 2021-01-01 | 2021-07-23 | 203 |
ID.1235 | 2021-02-05 | 2021-02-07 | 2 |
El problema que he encontrado es que alrededor de 30 registros individuales tiene una fecha de resolución incorrecta. Mi solución inicial fue actualizar las fechas de esos registros en el propio sistema, pero el administrador del sistema dijo que no pueden hacer la actualización e intentó todo lo que pudo. Así que la única opción que tengo es reemplazar la fecha de esos registros manualmente y tendrá que hacerse de forma rutinaria.
He fusionado otro archivo de Excel y lo adjunto al final de la tabla actual con los 30 registros y las fechas correctas.
IDENTIFICACIÓN | Fecha de creación | Fecha de resolución | NetDays | Fecha de fusión |
ID.1234 | 2021-01-01 | 2021-07-23 | 203 | 2021-01-05 |
ID.1235 | 2021-02-05 | 2021-02-07 | 2 | nulo |
Reemplazar la fecha de resolución directamente sería óptimo para mí porque mi columna NetDays está calculando actualmente la diferencia entre la fecha resuelta y la fecha de creación, que también quita los fines de semana.
¿Cómo puedo hacer que Power BI compruebe los valores de Fecha combinada si existe un valor para reemplazar el de la Fecha de resolución?
Solved! Go to Solution.
Usando los siguientes códigos M, reemplazará fácilmente los valores de la columna "Fecha resuelta" con valores en "Fecha combinada" si no son nulos:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45W8nQxNDI2UdJRMtQ31DcyMDIEMs31jYxhbCMDY7CkKUQgVgeqxRQkBxMFMc3hTCDOK83JUYqNBQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, #"Created Date" = _t, #"Resolved Date" = _t, NetDays = _t, #"Merged Date" = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", type text}, {"Created Date", type date}, {"Resolved Date", type date}, {"NetDays", Int64.Type}, {"Merged Date", type date}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each if [Merged Date]=null then [Resolved Date] else [Merged Date]),
#"Replaced Value" = Table.ReplaceValue(#"Added Custom",each [Resolved Date],each [Custom],Replacer.ReplaceValue,{"Resolved Date"}),
#"Removed Columns" = Table.RemoveColumns(#"Replaced Value",{"Custom"})
in
#"Removed Columns"
Y verás:(Después de reemplazar)
Para el archivo .pbix relacionado, pls ver adjunto.
Saludos
Kelly
¿Respondí a su pregunta? Marque mi respuesta como una solución!
@dnExplorer71 si agrega otra columna como he descrito, no se le pedirá que realice ningún cambio, fin de los datos, PQ va a devolver el mismo nombre de columna "Fecha resuelta" que ya se utiliza "Datos combinados" datos y no se le pedirá que realice ningún cambio. No estoy seguro de si siguió los 3 pasos que describí en mi respuesta anterior.
✨ Síguenos en LinkedIn
Consulta mi última entrada de blog La potencia del uso de grupos de cálculo con relaciones inactivas (Parte 1) (perytus.com) Me gustaría ❤ Elogios si mi solución ayudó. 👉 Si puede pasar tiempo publicando la pregunta, también puede hacer esfuerzos para dar Felicitaciones a quien ayudó a resolver su problema. ¡Es una muestra de agradecimiento!
⚡ Visítenos en https://perytus.com, su ventanilla única para proyectos, formación y consultoría relacionados con Power BI.⚡
Uno de mis desafíos es que ya he creado un panel en la tabla existente. Si una de las soluciones que tengo que agregar requiere que agregue otra columna, creo que tengo que reelaborar un par de medidas calculadas y algunas visualizaciones. Espero no tener que hacer esto, pero tal vez es la única manera?
Usando los siguientes códigos M, reemplazará fácilmente los valores de la columna "Fecha resuelta" con valores en "Fecha combinada" si no son nulos:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45W8nQxNDI2UdJRMtQ31DcyMDIEMs31jYxhbCMDY7CkKUQgVgeqxRQkBxMFMc3hTCDOK83JUYqNBQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, #"Created Date" = _t, #"Resolved Date" = _t, NetDays = _t, #"Merged Date" = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", type text}, {"Created Date", type date}, {"Resolved Date", type date}, {"NetDays", Int64.Type}, {"Merged Date", type date}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each if [Merged Date]=null then [Resolved Date] else [Merged Date]),
#"Replaced Value" = Table.ReplaceValue(#"Added Custom",each [Resolved Date],each [Custom],Replacer.ReplaceValue,{"Resolved Date"}),
#"Removed Columns" = Table.RemoveColumns(#"Replaced Value",{"Custom"})
in
#"Removed Columns"
Y verás:(Después de reemplazar)
Para el archivo .pbix relacionado, pls ver adjunto.
Saludos
Kelly
¿Respondí a su pregunta? Marque mi respuesta como una solución!
@dnExplorer71 otra forma es utilizar los pasos siguientes:
Paso 1 - agregue otra columna personalizada en PQ, llamémosla Nueva fecha y el código M es si [Fecha combinada] = null luego [Fecha de resolución] else [Fecha combinada]
Paso 2: quitar las columnas Fecha combinada y Fecha resuelta
Paso 3 - Cambiar el nombre de la columna Nueva fecha a Fecha resuelta
En este momento, la columna Fecha resuelta se sobrescribe con Fecha combinada donde Fecha combinada está disponible.
si el cálculo de días netos se realiza en PQ, agregue estos pasos antes del cálculo de días netos, si se realiza a través de DAX, no se requiere ningún cambio en el DAX
✨ Síguenos en LinkedIn
Consulta mi última entrada de blog La potencia del uso de grupos de cálculo con relaciones inactivas (Parte 1) (perytus.com) Me gustaría ❤ Elogios si mi solución ayudó. 👉 Si puede pasar tiempo publicando la pregunta, también puede hacer esfuerzos para dar Felicitaciones a quien ayudó a resolver su problema. ¡Es una muestra de agradecimiento!
⚡ Visítenos en https://perytus.com, su ventanilla única para proyectos, formación y consultoría relacionados con Power BI.⚡
La calcuación de NetDays se realiza invocando el código DAX que he usado de otra fuente en línea. Espero que esto le ayude a entender lo que se ha construido hasta ahora.
@dnExplorer71 Puedo cosa de un par de enfoques a este. Una sería agregar una columna adicional con un 1 en ella para los 30 registros. Ordene la tabla, use Table.Buffer y, a continuación, Quite duplicados en la columna ID. Las filas 1 deben filtrarse hasta la parte superior y, por lo tanto, esto eliminará las filas de id. duplicadas con la fecha de resolución incorrecta.
Otro enfoque sería usar una consulta y una tabla independientes (no anexar) y escribir una función para realizar el reemplazo.