Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
Anonymous
Not applicable

Lleve los primeros valores hasta un cierto nivel

Hola

Tengo una pregunta bastante complicada que no puedo resolver yo mismo.

Tengo este tipo de grabaciones, que describen las franjas horarias :

PrincipioCategoríaDuración (horas)
23/01/2020 09:00Mejor6
23/01/2020 15:00blibli3
23/01/2020 18:00bloblo2

Tengo que crear informes que sólo toman 7,5 horas como máximo por día, por lo que me gustaría añadir una columna que vuelva a calcular las duraciones para que su total alcance los 7,5, empezando por los primeros. Así es como se vería:

Ejemplo:

PrincipioCategoríaDuración (horas)Duración (2)
23/01/2020 09:00Mejor66
23/01/2020 15:00blibli31.5
23/01/2020 18:00bloblo20

Puedo hacerlo extrayendo los datos y usando Excel mais me encantaría que se mostraran directamente en PowerBi.

Gracias por su ayuda,

3 ACCEPTED SOLUTIONS

Hola @jpleac,

Para que funcione, reemplace la parte en negrita (es mi nombre de último paso).

Echa un vistazo a los tuyos pasos, obtén el nombre y reempláalo en la función.

Si es posible compartir el código m, por lo que puedo reemplazarlo con su nombre de último paso.



Did I answer your question? Mark my post as a solution!

Proud to be a Super User!



View solution in original post

Anonymous
Not applicable

Hola

muchas gracias por su respuesta. DAX es una manera más fácil para mí para completar la tarea.

No tengo un índice, así que probé en la fecha de inicio de esta manera:

Medidas ?
var _previousduration- CALCULATETABLE(VALUES('Table'[Duración (horas)]),FILTER(ALL('Table'),'Table'[Beginning]<MAX('Table'[Beginning]))Return
IF(SUMX(FILTER(ALL('Table'),'Table'[Beginning]<-MAX('Table'[Beginning])),'Table'[Duración (horas)])<-7.5,MAX('Tabla'[Duración (horas)]),7.5-SUMX(_previousduration,'Table'[Duración (horas)]))
Se ve para trabajar, excepto si sólo tengo una tarea más de 7.5h. En ese caso, el resultado es 0 (debe ser 7.5).
Capture.PNG
¿Hay alguna manera de que usted pueda pensar en que resolvería el problema ?
Gracias

View solution in original post

Hola @jpleac ,

Puede agregar un criterio en la función if para lograrlo.

Measure = 
var _previousduration= CALCULATETABLE(VALUES('Table'[Duration (hours)]),FILTER(ALL('Table'),'Table'[Index]<MAX('Table'[Index])))Return
IF(MAX('Table'[Duration (hours)])>=7.5,7.5,IF(SUMX(FILTER(ALL('Table'),'Table'[Index]<=MAX('Table'[Index])),'Table'[Duration (hours)])<=7.5,MAX('Table'[Duration (hours)]),7.5-SUMX(_previousduration,'Table'[Duration (hours)])))
Duration (2) = 
IF('Table'[Measure]>0,'Table'[Measure],0)

Finalmente verá:

Annotation 2020-06-02 091312.png

Para el archivo .pbix modificado, pls haga clic aquí.

Saludos
Kelly
¿He respondido a tu pregunta? ¡Marca mi puesto como una solución!

View solution in original post

8 REPLIES 8
v-kelly-msft
Community Support
Community Support

Hola @jpleac ,

También puede intentar utilizar la expresión dax para lograrlo:

Cree 2 medidas como se indica a continuación:

Measure = 
var _previousduration= CALCULATETABLE(VALUES('Table'[Duration (hours)]),FILTER(ALL('Table'),'Table'[Index]<MAX('Table'[Index])))Return
IF(SUMX(FILTER(ALL('Table'),'Table'[Index]<=MAX('Table'[Index])),'Table'[Duration (hours)])<=7.5,MAX('Table'[Duration (hours)]),7.5-SUMX(_previousduration,'Table'[Duration (hours)]))
Duration (2) = 
IF('Table'[Measure]>0,'Table'[Measure],0)

Finalmente verá:

Annotation 2020-06-01 164302.png

Para el archivo .pbix relacionado, pls haga clic aquí.

Saludos
Kelly
¿He respondido a tu pregunta? ¡Marca mi puesto como una solución!

Anonymous
Not applicable

Hola

muchas gracias por su respuesta. DAX es una manera más fácil para mí para completar la tarea.

No tengo un índice, así que probé en la fecha de inicio de esta manera:

Medidas ?
var _previousduration- CALCULATETABLE(VALUES('Table'[Duración (horas)]),FILTER(ALL('Table'),'Table'[Beginning]<MAX('Table'[Beginning]))Return
IF(SUMX(FILTER(ALL('Table'),'Table'[Beginning]<-MAX('Table'[Beginning])),'Table'[Duración (horas)])<-7.5,MAX('Tabla'[Duración (horas)]),7.5-SUMX(_previousduration,'Table'[Duración (horas)]))
Se ve para trabajar, excepto si sólo tengo una tarea más de 7.5h. En ese caso, el resultado es 0 (debe ser 7.5).
Capture.PNG
¿Hay alguna manera de que usted pueda pensar en que resolvería el problema ?
Gracias
camargos88
Community Champion
Community Champion

Hola @jpleac ,

Pruebe este código para una columna personalizada en Power Query:

Dejar
_dateTime [Comienzo],
_currentValue de la tecla de campo [o"Duración (horas)"],
_day de tabla : Table.SelectRows(?"Changed Type",
Cada
Date.From([Beginning]) - Date.From(_dateTime) y
[Comienzo] < _dateTime
)[O"Duración (horas)"],
_result de la casa de los
List.Accumulate(_day, 7.5, (s,c) ?> s - c) en
si _result > 0, entonces _currentValue
otra si _result + _currentValue > 0 y luego _result + _currentValue
else 0

cambiar la parte en negrita para el nombre del último paso.

Capture.PNG



Did I answer your question? Mark my post as a solution!

Proud to be a Super User!



Anonymous
Not applicable

Hola, muchas gracias por su rápida respuesta.

Probé la solución, pero no puedo hacer que funcione.

Puedo agregar una columna personalizada con la fórmula que proporcionó, pero no entiendo con qué debo reemplazar "tipo cambiado", ni obtengo cómo usar la fórmula con "addTable" a continuación.

Annotation 2020-05-30 192947.png

¿Podría ser un poco más descriptivo por favor?

Saludos

Hola @jpleac,

Para que funcione, reemplace la parte en negrita (es mi nombre de último paso).

Echa un vistazo a los tuyos pasos, obtén el nombre y reempláalo en la función.

Si es posible compartir el código m, por lo que puedo reemplazarlo con su nombre de último paso.



Did I answer your question? Mark my post as a solution!

Proud to be a Super User!



Anonymous
Not applicable

Hola Camargos,

Creo que tu solución funciona. Lo marcaré como una solución tan pronto como tenga una respuesta a la pregunta que le hice a la segunda persona que me propuso una solución (con DAX, que es un poco más fácil para el novato que soy).

Gracias de nuevo,

Hola @jpleac ,

Puede agregar un criterio en la función if para lograrlo.

Measure = 
var _previousduration= CALCULATETABLE(VALUES('Table'[Duration (hours)]),FILTER(ALL('Table'),'Table'[Index]<MAX('Table'[Index])))Return
IF(MAX('Table'[Duration (hours)])>=7.5,7.5,IF(SUMX(FILTER(ALL('Table'),'Table'[Index]<=MAX('Table'[Index])),'Table'[Duration (hours)])<=7.5,MAX('Table'[Duration (hours)]),7.5-SUMX(_previousduration,'Table'[Duration (hours)])))
Duration (2) = 
IF('Table'[Measure]>0,'Table'[Measure],0)

Finalmente verá:

Annotation 2020-06-02 091312.png

Para el archivo .pbix modificado, pls haga clic aquí.

Saludos
Kelly
¿He respondido a tu pregunta? ¡Marca mi puesto como una solución!
Anonymous
Not applicable

Hola

Muchas gracias. Funciona !

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors