Seguimos avanzando con Power Query.
Hoy algo siempre útil, el cálculo porcentual sobre el total general.
Como vemos el objetivo es incluir para cada país, cada fila, el peso o porcentaje de cada país sobre el total acumulado de éstos.
Como siempre cargaremos nuestra tabla al editor de Power Query, y una vez en la consulta creada añadiremos una columna personalizada, desde la ficha Agregar Columna > General > Columna personalizada,, donde le asignaremos el nombre '% Total' y la fórmula:
= [VENTAS] / List.Sum(#"Tipo cambiado"[VENTAS])
Importante la forma en que nos referimos, con la función M List.Sum, al campo completo de VENTAS.. indicando la lista completa de elementos de la tabla de trabajo (paso previo) y de una de sus columnas '[VENTAS]'.
Muy rápido y simple, sin necesidad de variables o cálculos externos... al modo Excel :D
Calcularemos ahora los porcentajes de cada país respecto al subtotal de la REGIÓN a la que pertenece.
Seguimos en nuestra consulta de Power Query y añadiremos una nueva columna personalizada, que llamaré '% Región' con la fórmula:
= [VENTAS]/ Table.SelectRows(Table.Group(#"Tipo cambiado1", {"REGION"},
{{"Region Total", each List.Sum([VENTAS]), type number}})
, each ([REGION] = [REGION])){[REGION=[REGION]]}[Region Total]
En este caso el truco consiste en agrupar 'virtualmente' por REGION, y así poder trabajar sobre ese parcial en cada caso:
Table.Group(#"Tipo cambiado1", {"REGION"},{{"Region Total", each List.Sum([VENTAS]), type number}})
Para finalmente con Table.SelectRows trabajamos en cada fila con el parcial que nos interesa, esto es, cuando coincidan las REGIONES, recuperando el dato de la columna agrupada [Region Total].
Table.SelectRows(... , each ([REGION] = [REGION])){[REGION=[REGION]]}[Region Total]
Obteniendo finalmente el cociente buscado...
El código completo quedaría:
Hoy algo siempre útil, el cálculo porcentual sobre el total general.
Como vemos el objetivo es incluir para cada país, cada fila, el peso o porcentaje de cada país sobre el total acumulado de éstos.
Como siempre cargaremos nuestra tabla al editor de Power Query, y una vez en la consulta creada añadiremos una columna personalizada, desde la ficha Agregar Columna > General > Columna personalizada,, donde le asignaremos el nombre '% Total' y la fórmula:
= [VENTAS] / List.Sum(#"Tipo cambiado"[VENTAS])
Importante la forma en que nos referimos, con la función M List.Sum, al campo completo de VENTAS.. indicando la lista completa de elementos de la tabla de trabajo (paso previo) y de una de sus columnas '[VENTAS]'.
Muy rápido y simple, sin necesidad de variables o cálculos externos... al modo Excel :D
Calcularemos ahora los porcentajes de cada país respecto al subtotal de la REGIÓN a la que pertenece.
Seguimos en nuestra consulta de Power Query y añadiremos una nueva columna personalizada, que llamaré '% Región' con la fórmula:
= [VENTAS]/ Table.SelectRows(Table.Group(#"Tipo cambiado1", {"REGION"},
{{"Region Total", each List.Sum([VENTAS]), type number}})
, each ([REGION] = [REGION])){[REGION=[REGION]]}[Region Total]
En este caso el truco consiste en agrupar 'virtualmente' por REGION, y así poder trabajar sobre ese parcial en cada caso:
Table.Group(#"Tipo cambiado1", {"REGION"},{{"Region Total", each List.Sum([VENTAS]), type number}})
Para finalmente con Table.SelectRows trabajamos en cada fila con el parcial que nos interesa, esto es, cuando coincidan las REGIONES, recuperando el dato de la columna agrupada [Region Total].
Table.SelectRows(... , each ([REGION] = [REGION])){[REGION=[REGION]]}[Region Total]
Obteniendo finalmente el cociente buscado...
El código completo quedaría:
let Origen = Excel.CurrentWorkbook(){[Name="Tabla1"]}[Content], #"Tipo cambiado" = Table.TransformColumnTypes(Origen,{{"PAIS", type text}, {"VENTAS", Int64.Type}}), #"Personalizada agregada" = Table.AddColumn(#"Tipo cambiado", "% Total", each [VENTAS] / List.Sum(#"Tipo cambiado"[VENTAS])), #"Tipo cambiado1" = Table.TransformColumnTypes(#"Personalizada agregada",{{"% Total", Percentage.Type}}), #"Personalizada agregada1" = Table.AddColumn(#"Tipo cambiado1", "% Region", each [VENTAS]/ Table.SelectRows( Table.Group(#"Tipo cambiado1", {"REGION"}, {{"Region Total", each List.Sum([VENTAS]), type number}}) , each ([REGION] = [REGION])){[REGION=[REGION]]}[Region Total]) in #"Personalizada agregada1"
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.