Reduzca en porcentaje si el valor de la columna es igual a algo.

Un usuario Pregunto ✅

elemento de alimentación

Hola a todos,

Soy nuevo en Power BI, y gracias a las publicaciones útiles aquí, logré ponerme al día bastante rápido, ¡así que gracias por eso!

Un problema para el que no puedo encontrar una respuesta es el siguiente. Tengo un sitio de SharePoint interno, que tiene formulario archivable.

imagen.png

Una vez que el usuario ingresa el dinero recaudado. sharepoint suma el total y lo coloca en una columna calculada llamada «Total».

El campo que dice «Tomó en nombre de» es una búsqueda personal.

Lo que estoy buscando es una medida en Power BI, que si el coumn «Tomó en nombre de» = el nombre de alguien (porque puede estar en blanco) quite el 80% del total de estas entradas y agréguelo a otra columna.

Si explico por qué hacemos esto, tal vez te ayude a entender lo que estoy tratando de lograr.

Cada vez que un usuario realiza un pago, lo registra en Sharepoint utilizando este formulario. Si el usuario recibe un pago por un cliente que pertenece a otro usuario, obtiene el 20% y el usuario al que pertenece el cliente obtiene el 80%.

Usando esta medida, logré obtener el 80% del efectivo total. Así que asumo que habrá algún tipo de declaración if involucrada, así como una columna para almacenar datos que se agregarán al total de cada persona.

imagen.png

¡Gracias por adelantado!

Guillermo

En respuesta a elemento de alimentación

Hola @fodelement,

Cree una nueva tabla haciendo clic en Nueva tabla en Modelado en la página de inicio. Luego escriba la fórmula para crear una nueva tabla

NewTable=UNION(SELECTCOLUMNS(Table,"Name",Table[CreatedBy],"Value",table[Total]),SELECTCOLUMNS(FILTER(Table, Table[Index]=CALCULATE(MIN(Table[Index]),ALLEXCEPT(Table,Table[Took on Behalf of]))),"Name",Table[Took on Behalf of],"Value",Table[OtherPersonGets]))

Luego agregue el Nombre como eje, la suma (valor) como campos de valor.

Atentamente,
ángelia

rachaelnelson

Cree una columna calculada de la siguiente manera:

CollectedCalculation = IF (DailyCashReport[TookOnBehalfOf]<>«»,InformeDiarioEfectivo[Total]*.8, Informe diario de efectivo[Total])

elemento de alimentación

En respuesta a rachaelnelson

Hola,

Gracias por su respuesta. Esto elimina con éxito el 80% del total solo si el campo tiene un nombre. Entonces hice una nueva columna que calcula la diferencia entre los dos para poder aplicar el 20% a la persona que tomó el pago.

imagen.png

¡Así que gracias por eso!

La pregunta que queda ahora es, ¿cómo puedo hacer que Power BI aplique el 80 % eliminado (648,64) al nombre de la persona que está en la columna (tomado en nombre de)?

rachaelnelson

En respuesta a elemento de alimentación

¿Puede enviarme algunas filas de su conjunto de datos que se está utilizando? ¿Está tratando de crear una matriz con estos datos? ¿O qué tipo de visual estás tratando de crear?

Pude ver lo siguiente, pero esto podría no ser lo que está tratando de lograr.

Rep Total recaudado para sí mismo Total recaudado por otro rep Total recaudado para otro rep

Nombre1 100% del Total 80% del Total 20% del Total

Nombre2…

elemento de alimentación

En respuesta a rachaelnelson

Hola de nuevo, a continuación hay algunos datos de prueba que ingresé.

imagen.png

Las cobranzas, la tarifa dividida y la tarifa de consulta se agregan para obtener un total. Luego, Sharepoint dividirá la cantidad en un 80 % y un 20 % si se completa «tomó en nombre». y rellene los campos «otra persona recibe» con el 80 % y «total» con el 20 %

Usando su fórmula, puedo obtener los siguientes datos. Ahora, aunque los datos se dividen correctamente, estoy buscando una manera de aplicar el 80 % que se calculó y aplicarlo a la persona que está en el campo «Tomó en nombre de». Entonces, en el siguiente ejemplo, querríamos que $80 de «Otra persona obtiene» ($152) fueran para Peter y el resto ($72) para Tokay.

Los datos se presentarán en gráficos de barras simples, como a continuación, solo con un valor, no dos. (que será su total, + el total de «Otra persona recibe»)

imagen.png

Estoy esencialmente en el punto donde necesito encontrar una manera de hacer que esta fórmula de Excel funcione en DAX.

imagen.png

rachaelnelson

En respuesta a elemento de alimentación

No estoy seguro de si necesita crear ambas columnas calculadas, pero si lo hace, aquí están las fórmulas.

OtraPersonaObtiene = IF(DailyCashReport[TookOnBehalfOf]<>«»,(InformeDiarioEfectivo[Collections]+Informe diario de efectivo[Split-Fee Payment]+Informe diario de efectivo[Consult Fee])*.8,InformeDiarioEfectivo[Collections]+Informe diario de efectivo[Split-Fee Payment]+Informe diario de efectivo[Consult Fee]

Total = InformeDiarioCash[Collections]+Informe diario de efectivo[Split-Fee Payment]+Informe diario de efectivo[Consult Fee]

Déjame saber si funciona. No ingresé el conjunto de datos en mi BI.

elemento de alimentación

En respuesta a rachaelnelson

Buenos días,

Muchas gracias por toda su ayuda, lo aprecio.

Sharepoint ya calcula esos campos para mí.

Captura.PNG

El resultado final será un gráfico de barras para cada usuario. Solo tendrá un valor. Ese valor será:

«Total» + «Otra persona recibe»

El problema que no puedo resolver es que «Otra persona obtiene» debe ser solo si «tomó en nombre de» = la persona.

Entonces, para cada instancia que «tomó en nombre de» es = para «William» SUMAR esos y luego agregarlos a «Total» para obtener un valor único.

La cantidad total que recibieron por sí mismos y la cantidad total que otras personas recibieron por ellos. (El cálculo del 80% con el que ya ayudó)

Lo siento si no estoy siendo claro, estoy nervioso con todo esto. 🙂

Captura.PNGCaptura.PNG

Esto es tan simple como puedo hacerlo.

(Usando excel que es)

En respuesta a elemento de alimentación

Hola @fodelement,

Agregue una columna de índice en Power Query Edit haciendo clic en «agregar columna»->columna de índice, consulte la siguiente captura de pantalla.

1 PNG

Luego cree una columna calculada usando la fórmula.

Column = IF(Table3[Person]= LOOKUPVALUE(Table3[Took on behalf],Table3[Index],Table3[Index]-1),LOOKUPVALUE(Table3[They get],Table3[Index],Table3[Index]-1)+Table3[I get],Table3[I get])

Obtendrás el resultado esperado.

2 PNG

Finalmente, cree un gráfico de barras usando la nueva columna de la siguiente manera.

3.png

Atentamente,
ángelia

elemento de alimentación

En respuesta a v-huizhn-msft

Angelia, muchas gracias, esto es lo más cerca que he estado de hacer que esto funcione.

TEST = IF('Daily Cash Report'[Author.FieldValuesAsText.Title]= LOOKUPVALUE('Daily Cash Report'[Took on Behalf_x0020.Title],'Daily Cash Report'[Index],'Daily Cash Report'[Index]-1),LOOKUPVALUE('Daily Cash Report'[Other Person Gets],'Daily Cash Report'[Index],'Daily Cash Report'[Index]-1)+'Daily Cash Report'[Total],'Daily Cash Report'[Total])

Mi único problema ahora (que espero que no sea grande) es que cuando la persona ingresa más de una entrada, deja de agregar «Otra persona obtiene».

Captura.PNGCaptura.PNG

Además, si la persona no creó una entrada y su nombre aún no aparece en el ‘Informe de efectivo diario'[Author.FieldValuesAsText.Title] columna, no aparecen.

No estoy seguro de si hay algo que podamos hacer para que eso funcione.

Estoy pensando en usar Excel para obtener la conexión desde Sharepoint, hacer los cálculos y luego hacer que Power BI lo importe desde la hoja de cálculo puede ser la única forma de hacer que esto funcione.

En respuesta a elemento de alimentación

Hola @fodelement,

Cree una nueva tabla haciendo clic en Nueva tabla en Modelado en la página de inicio. Luego escriba la fórmula para crear una nueva tabla

NewTable=UNION(SELECTCOLUMNS(Table,"Name",Table[CreatedBy],"Value",table[Total]),SELECTCOLUMNS(FILTER(Table, Table[Index]=CALCULATE(MIN(Table[Index]),ALLEXCEPT(Table,Table[Took on Behalf of]))),"Name",Table[Took on Behalf of],"Value",Table[OtherPersonGets]))

Luego agregue el Nombre como eje, la suma (valor) como campos de valor.

Atentamente,
ángelia

elemento de alimentación

En respuesta a v-huizhn-msft

Hola de nuevo @v-huizhn-msft

Empecé a probar esto con datos reales y encontré un problema. Así que aquí está el código.

NewTable = UNION(SELECTCOLUMNS('Daily Cash Report',"Name",'Daily Cash Report'[Author.FieldValuesAsText.Title], "office", 'Daily Cash Report'[Office.Office], "date", 'Daily Cash Report'[Date], "Value",'Daily Cash Report'[Total]),SELECTCOLUMNS(FILTER('Daily Cash Report', 'Daily Cash Report'[Index]=CALCULATE(MIN('Daily Cash Report'[Index]),ALLEXCEPT('Daily Cash Report','Daily Cash Report'[Took on Behalf_x0020.Title]))),"Name",'Daily Cash Report'[Took on Behalf_x0020.Title], "office", 'Daily Cash Report'[Office.Office], "date", 'Daily Cash Report'[Date], "Value",'Daily Cash Report'[Other Person Gets]))

Aquí están los datos de Sharepoint

SharepointSharepoint

Aquí está la «Nueva Tabla» que me tenías crear.

Power Bi "Nueva tabla"Power Bi «Nueva tabla»

Ahora, tira y aplica con éxito la cantidad correcta (80%) que la persona merece, e incluso lo pone en el gráfico como yo quería. El problema es que, si el nombre de la persona aparece dos veces (como los datos de Sharepoint anteriores), solo coloca la primera entrada de la columna «tomó en nombre».

A continuación se muestran los datos que se ingresan en Sharepoint o «Informe de efectivo diario» en el código.

Captura.PNG

Si observa en «Nueva tabla», sin embargo, muestra el nombre de los creadores varias veces. Así que solo necesito que haga lo mismo para «asumir el nombre» de la persona también.

elemento de alimentación

En respuesta a elemento de alimentación

Creo que solo estoy convencido de cómo el

UNION(SELECTCOLUMNS

el código funciona.

Cada vez que trato de hacer cambios, termina empeorando.

En respuesta a elemento de alimentación

Hola @fodelement,

La función SELECTCOLUMNS devuelve una tabla que incluye una columna que satisface la expresión. UNION crea una tabla de combinación de un par de tablas.

Atentamente,
ángelia

elemento de alimentación

En respuesta a v-huizhn-msft

@v-huizhn-msft, como siempre, gracias por su visita. Entonces, en el código que publiqué, ¿tiene alguna idea de por qué impide que el nombre de la otra persona se agregue a la columna más de una vez?

En realidad, si el nombre de la otra persona no se agrega a la lista nuevamente, pero su total aumenta, estará bien. Pero en su estado actual, una vez que alguien se agrega a la columna a través de «tomado en nombre de», no se vuelve a agregar y su monto total en dólares no aumenta.

elemento de alimentación

En respuesta a elemento de alimentación

¡¡Hola a todos!!

Todavía necesito ayuda con esto, si alguien puede echarme un vistazo. 🙂

Así que aquí hay un pequeño bache.

¡Gracias!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *