MbProg
Hola, he importado estos datos en Power BI y quiero deshacerlos, pero así:
¿Cómo puedo hacerlo en Power BI Desktop? Intenté mucho, pero no pude encontrar una manera hasta ahora.
malone
Pude lograr su resultado en el Editor de consultas, pero puede haber una solución mejor/más sencilla. Esto es lo que hice:
1. Duplique su consulta/tabla original
2. Elimine las columnas «Difxxxx» de la consulta original
3. Elimine las columnas «2012, etc.» de la consulta duplicada
4. Quite el pivote de las columnas en cada consulta. Ahora debería tener dos tablas que no estén pivotadas como desee. El siguiente paso es fusionarlos.
5. En la consulta Duplicar, agregue una columna personalizada con fórmula = Text.End([Attribute], 4). Esto convertirá los valores «Dif 2012» en «2012»
6. En la consulta Duplicar, agregue una columna personalizada que concatene «Región» con su nueva columna personalizada. El resultado será algo así como «North2012». Esta será su columna de ID para fusionar las consultas.
7. En la consulta Original, agregue una columna personalizada que concatene «Región» con la columna «Atributo». El resultado serán valores «North2012» similares a los del paso 6.
8. En la consulta original, fusione la consulta duplicada utilizando estos nuevos campos de «ID» como columnas coincidentes.
9. Quite la columna ID. Su tabla ahora debería aparecer como lo desea.
Como dije, puede haber una mejor solución, pero esto debería funcionar para usted.
MbProg
En respuesta a malone
@jmalone
Si duplica la tabla original, ¿eso significa duplicar el tráfico de datos cuando Power BI está actualizando sus datos de forma programada? ¿O importa los datos una vez y los duplica dentro de la aplicación?
v-micsh-msft
En respuesta a MbProg
Hola mbprog,
Podríamos quitar la dinámica de las columnas en el editor de consultas de Power BI. Siga los pasos a continuación:
1.Abra el Editor de consultas con la fuente de datos, luego seleccione la columna con el mismo tipo que le gustaría tener sus valores en una columna (presione Ctrl y luego use el botón izquierdo del mouse para seleccionar dos o más columnas), luego haga clic en Desenmarañar columna ,
2. Elija las otras columnas del mismo tipo que le gustaría poner en una sola columna y seleccione Columnas sin pivotar. Cambie el nombre de la columna según lo requiera, luego, en la pestaña de inicio, haga clic en cerrar y aplicar.
3. Necesitamos eliminar los valores duplicados, crear una columna en Vista de datos de Power BI con la siguiente fórmula:
Columna = si (valor (Hoja1[Attribute])=valor(derecha(Hoja1[Attribute.1],4)),1,0)
Este método requiere que su última cadena Diff 2012 sea la misma que la columna Año.
4. Cree una nueva tabla con la siguiente fórmula:
Tabla = filtro (Hoja1, Hoja1[Column]=1)
Ver la tabla de resultados:
Para la acción duplicada en Power BI Query Editor, esto ocurre dentro de la aplicación Power BI Desktop, una vez que se importan los datos, no afectará la estructura de la fuente de datos y no habrá más tráfico de datos al modelar los datos con la fuente de datos.
Si tiene más preguntas, no dude en volver a publicar.
Saludos
nreynolds3
En respuesta a v-micsh-msft
Hola,
¿Cómo eliminaría los duplicados si tengo más de 2 atributos?
ImkeF
En respuesta a nreynolds3
Hola @nreynolds3,
no entiendo tu pregunta ¿Podría por favor dar más detalles?
Gracias.
Anónimo
En respuesta a ImkeF
¿Es posible descentrar los datos en dax en lugar de power query?
MbProg
En respuesta a v-micsh-msft
Al descentrar los datos y crear tantos duplicados y una nueva tabla de filtro, ¿cuánto afecta eso al rendimiento cuando se trata de tablas con aproximadamente 1 millón de registros?
Ahora también encontré otra forma usando la opción de combinación en Power Query. eso no es mas rapido?
v-micsh-msft
En respuesta a MbProg
Hola mbprog,
Sí, mi mal. Combine también es bueno para ir, y más rápido.
El punto debe tenerse en cuenta es que cuando se usa combinar, también se crean filas duplicadas. Eliminarlos debería ser similar a los pasos mencionados aquí. O si tiene alguna otra solución mejor, compártala si no le importa.
Saludos
ImkeF
En respuesta a v-micsh-msft
Posiblemente, esto funciona mejor:
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45W8ssvKslQ0lEyBGEDIGFqAGaBSbCAoZGBUqxOtJJrYnEJkGsEwiBxM1QlQNIYojA8FazQGIRB4uaoSoCkCURhcH4p2G4TEAZJWKCqAZJA18TGAgA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Region = _t, #"2012" = _t, #"2013" = _t, #"2014" = _t, #"Diff 2012" = _t, #"Diff 2013" = _t, #"Diff 2014" = _t]), #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(Source, {"Region"}, "Attribute", "Value"), ClassifyValues = Table.AddColumn(#"Unpivoted Other Columns", "Diff", each if Text.Start([Attribute], 4) = "Diff" then "Diff " else "Value" ), StandardizeYear = Table.ReplaceValue(ClassifyValues,"Diff ","",Replacer.ReplaceText,{"Attribute"}), PivotBack = Table.Pivot(StandardizeYear, List.Distinct(StandardizeYear[Diff]), "Diff", "Value"), Attribute2 = Table.AddColumn(PivotBack, "Attribute2", each "Diff "&[Attribute]) in Attribute2
Al menos, es completamente dinámico, por lo que si se agregan o eliminan nuevos años, no es necesario ajustar la consulta.
(? ¿Es realmente necesario el último paso?)