Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
Hola a todos
Tengo un problema en el que estoy intentando replicar la función COUNTIFS de Excel en PowerBI. Básicamente, tengo datos de ventas que me dan el Mes de ventas, Nombre de cuenta y Vendedor. Para calcular la comisión, el vendedor obtiene la comisión completa si solo se vendió a ese cliente en ese mes. Si dos vendedores venden al mismo cliente en el mismo mes, el bote se divide 50/50. Si la Persona A vende al Cliente A en el Mes 1 y la Persona B vende al Cliente A en el Mes 2, no se dividirán comisiones.
Esto es muy fácil de hacer en Excel, pero lo encuentro complicado en PowerBI : vea los datos sin procesar adjuntos y el resultado esperado. No creo que pueda usar CALCULATE(FILTER(...)) ya que necesito que los valores aparezcan en la columna para poder filtrar por todos los '0.5s'.
¿Algún consejo sobre cómo se podría lograr esto en BI? ¡Su ayuda es muy apreciada!
Solved! Go to Solution.
Hola @EMSh30 ,
@Greg_Decklerfórmula es genial, pero hay dos errores tipográficos. Lo he marcado en la captura de pantalla de abajo. Después de modificarlo, el resultado es el mismo que desea.
Saludos
Icey
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola @EMSh30 ,
En mi opinión, el primer valor debe ser 1, ¿verdad?
Si es así, prueba lo siguiente:
1. Agregue una columna de índice en Power Query Editor.
2. Cree una columna así:
Column =
VAR __Account = [Account]
VAR __Month =
MONTH ( [Month] )
VAR __Year =
YEAR ( [Month] )
VAR __Index = [Index]
VAR __Salesperson = [Salesperson]
VAR __Table =
ADDCOLUMNS (
'Table (2)',
"__Year", YEAR ( [Month] ),
"__Month", MONTH ( [Month] )
)
VAR __Table1 =
SUMMARIZE ( __Table, [__Year], [__Month], [Account], [Salesperson], [Index] )
VAR result1 =
COUNTROWS (
DISTINCT (
SELECTCOLUMNS (
FILTER (
__Table1,
[__Month] = __Month
&& [__Year] = __Year
&& [Account] = __Account
),
"__Salesperson", [Salesperson]
)
)
)
VAR result2 =
COUNTROWS (
FILTER (
__Table1,
[__Month] = __Month
&& [__Year] = __Year
&& [Account] = __Account
&& [Salesperson] = __Salesperson
&& [Index] <= __Index
)
)
RETURN
IF ( result2 > 1, 0, IF ( result1 = 1, 1, 0.5 ) )
Saludos
Icey
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola @EMSh30 ,
@Greg_Decklerfórmula es genial, pero hay dos errores tipográficos. Lo he marcado en la captura de pantalla de abajo. Después de modificarlo, el resultado es el mismo que desea.
Saludos
Icey
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Gracias de nuevo por su ayuda con esto. Me preguntaba si podría ayudarme con esta ligera modificación.
¿Cómo cambiaría la fórmula si quisiera contar solo la cuenta una vez y hubiera varias entradas en un mes determinado? Ver imagen adjunta - en esto, John vendió a A dos veces en el mismo mes, así que sólo quiero que la primera entrada se registre como un 1 para ese mes. Cuando les vende de nuevo en el mes 2, obtiene un 1 ya que sólo vendió a esa compañía una vez.
He intentado agregar columnas auxiliares y calcular a partir de eso, pero no funciona. Estoy seguro de que debe ser un ligero retoque en sus fórmulas, pero no puedo encontrar ese ajuste en el minuto.
Gracias de nuevo!!
Hola @EMSh30 ,
En mi opinión, el primer valor debe ser 1, ¿verdad?
Si es así, prueba lo siguiente:
1. Agregue una columna de índice en Power Query Editor.
2. Cree una columna así:
Column =
VAR __Account = [Account]
VAR __Month =
MONTH ( [Month] )
VAR __Year =
YEAR ( [Month] )
VAR __Index = [Index]
VAR __Salesperson = [Salesperson]
VAR __Table =
ADDCOLUMNS (
'Table (2)',
"__Year", YEAR ( [Month] ),
"__Month", MONTH ( [Month] )
)
VAR __Table1 =
SUMMARIZE ( __Table, [__Year], [__Month], [Account], [Salesperson], [Index] )
VAR result1 =
COUNTROWS (
DISTINCT (
SELECTCOLUMNS (
FILTER (
__Table1,
[__Month] = __Month
&& [__Year] = __Year
&& [Account] = __Account
),
"__Salesperson", [Salesperson]
)
)
)
VAR result2 =
COUNTROWS (
FILTER (
__Table1,
[__Month] = __Month
&& [__Year] = __Year
&& [Account] = __Account
&& [Salesperson] = __Salesperson
&& [Index] <= __Index
)
)
RETURN
IF ( result2 > 1, 0, IF ( result1 = 1, 1, 0.5 ) )
Saludos
Icey
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Esto es fantástico, gracias a ambos!!
@EMSh30 Tal vez intente esto:
Included? Column =
VAR __Account = [Account])
VAR __Month = MONTH([Month])
VAR __Year = YEAR([Month])
VAR __Table = ADDCOLUMNS('Table',"__Year",YEAR([Month]),"__Month",MONTH([Month]))
VAR __Table1 = SUMMARIZE(__Table,[Year],[Month],[Account])
RETURN
IF(COUNTROWS(FILTER(__Table1,[__Month]=__Month && [__Year]=__Year && [Account]=__Account))=1,1,.5)
@Greg_Deckler - ¡Gracias por esto! Sin embargo, ¿no parece considerar al vendedor? Cuando ejecuto esta fórmula en mi conjunto de datos, parece contar cuántas veces aparece el nombre, pero no considera si 2 personas han vendido a 1 empresa en 1 mes?
Disculpa si me he perdido algo, soy muy nuevo en esto.
@EMSh30 No, me lo perdí, debería ser como abajo. También se actualizó así que si la misma persona vende dos veces en el mismo mes a la misma cuenta que devuelve 1 y no .5.
Included? Column =
VAR __Account = [Account])
VAR __Month = MONTH([Month])
VAR __Year = YEAR([Month])
VAR __Table = ADDCOLUMNS('Table',"__Year",YEAR([Month]),"__Month",MONTH([Month]))
VAR __Table1 = SUMMARIZE(__Table,[Year],[Month],[Account],[Salesperson])
RETURN
IF(COUNTROWS(DISTINCT(SELECTCOLUMNS(FILTER(__Table1,[__Month]=__Month && [__Year]=__Year && [Account]=__Account),"__Salesperson",[Salesperson])))=1,1,.5)