hackfifi
¡Buenos días!
Tengo la siguiente tabla de datos de muestra / consulta «Detalle«. Me gustaría lograr la imagen de una tabla que se muestra a continuación («Resultado Esperado«) para comparar / conciliar valores entre dos Proyectos. Puedo desarrollar fácilmente una» Matriz Visual «que muestre solo los valores, pero no puedo averiguar cómo calcular el» Delta «.
También tenga en cuenta que «Proyecto» y «Tipo» son además Tablas «clave» que tiene una relación con la tabla «Detalle». El usuario debe «sólo» seleccionar dos proyectos. Hay más de 100 proyectos. ¡Saludos de antemano!
Greg_Deckler
En respuesta a hackfifi
@hackfifi Ah, los detalles son importantes. Querrá dos tablas de proyecto desconectadas. Puedes crearlos usando este código:
ProjectSlicerTable1 = DISTINCT('Table'[Project])
ProjectSlicerTable2 = DISTINCT('Table'[Project])
Úselos para sus rebanadoras. El código se convierte en:
Delta measure =
VAR __Type = MAX('Table'[Type])
VAR __Compare1 = MAX('ProjectSlicerTable1'[Project])
VAR __Compare2 = MAX('ProjectSlicerTable2'[Project])
VAR __A = SUMX(FILTER('Table',[Type]=__Type && [Project] = __Compare1),[Value])
VAR __B = SUMX(FILTER('Table',[Type]=__Type && [Project] = __Compare2),[Value])
RETURN
__B - __A
bchager6
Recreé su tabla de datos y la guardé como Book12.xlsx y realicé la siguiente transformación en el editor de consultas.
dejar
Fuente = Excel.Workbook (File.Contents («C: Book12.xlsx»), nulo, verdadero),
Sheet1_Sheet = Fuente {[Item=»Sheet1″,Kind=»Sheet»]}[Data],
# «Encabezados promocionados» = Table.PromoteHeaders (Sheet1_Sheet, [PromoteAllScalars=true]),
# «Tipo modificado» = Table.TransformColumnTypes (# «Encabezados promocionados», {{«Proyecto», escriba texto}, {«Tipo», escriba texto}, {«Valor», Int64.Tipo}}),
# «Columna dinámica» = Table.Pivot (# «Tipo cambiado», List.Distinct (# «Tipo cambiado»[Project]), «Proyecto», «Valor», List.Sum),
# «Valor reemplazado» = Table.ReplaceValue (# «Columna dinámica», nulo, 0, Reemplazo.ReplaceValue, {«A», «B», «C»}),
# «Columnas renombradas» = Table.RenameColumns (# «Valor reemplazado», {{«Tipo», «Proyecto»}}),
# «Columnas eliminadas» = Table.RemoveColumns (# «Columnas renombradas», {«C»}),
# «Agregado personalizado» = Table.AddColumn (# «Columnas eliminadas», «Delta (A vs B)», cada [B]-[A])
en
# «Añadido personalizado»
A continuación se muestra la tabla resultante.
Espero que esto ayude.
hackfifi
En respuesta a bchager6
Gracias @ bchager6 – Desafortunadamente, no puedo modificar la tabla en Power query ya que tengo más de 100 proyectos. Solo proporcioné un conjunto de datos de muestra; y ya hay más de 70 columnas y hay muchas medidas basadas en la consulta de energía actual. Necesito calcular una «medida». Saludos de nuevo por tu tiempo.
Greg_Deckler
@hackfifi Parece algo como:
Delta (A vs B) measure =
VAR __Type = MAX('Table'[Type])
VAR __A = SUMX(FILTER('Table',[Type]=__Type && [Project] = "A"),[Value])
VAR __B = SUMX(FILTER('Table',[Type]=__Type && [Project] = "B"),[Value])
RETURN
__B - __A
hackfifi
En respuesta a Greg_Deckler
@Greg_Deckler Gracias por tomarse el tiempo para responder. Pero mi menú desplegable «Proyecto» (lista de más de 100 proyectos) sería dinámico, es decir, el usuario puede seleccionar CUALQUIERA dos de más de 100 proyectos. Acabo de proporcionar un conjunto de datos de muestra … el modelo de datos actual tiene más de 70 columnas.
No estoy seguro de si necesito tener dos tablas de proyectos … ¿para que el usuario pueda seleccionar un proyecto de cada filtro de «Proyecto»? es decir, seleccione el proyecto «A» y seleccione el proyecto «B»?
Greg_Deckler
En respuesta a hackfifi
@hackfifi Ah, los detalles son importantes. Querrá dos tablas de proyecto desconectadas. Puedes crearlos usando este código:
ProjectSlicerTable1 = DISTINCT('Table'[Project])
ProjectSlicerTable2 = DISTINCT('Table'[Project])
Úselos para sus rebanadoras. El código se convierte en:
Delta measure =
VAR __Type = MAX('Table'[Type])
VAR __Compare1 = MAX('ProjectSlicerTable1'[Project])
VAR __Compare2 = MAX('ProjectSlicerTable2'[Project])
VAR __A = SUMX(FILTER('Table',[Type]=__Type && [Project] = __Compare1),[Value])
VAR __B = SUMX(FILTER('Table',[Type]=__Type && [Project] = __Compare2),[Value])
RETURN
__B - __A
hackfifi
En respuesta a Greg_Deckler
Gracias amigo – Eso funcionó.
Saludos por tu ayuda