cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Highlighted
Frequent Visitor

Devolver un valor si la fecha seleccionada está entre dos fechas

Hola

Estoy creando un panel de power bi para la planificación de apagado de máquinas. Digamos que tengo 5 máquinas. Cada máquina se somete a uno o dos mantenimientos cada año. Durante cada período de mantenimiento, la capacidad de una máquina es "0". Hasta que una máquina se somete al primer mantenimiento, su capacidad es "1". Después del primer mantenimiento, la capacidad es "2" y después de la segunda maitenance, la capacidad es "3".

Básicamente, necesito algo similar a la búsqueda 3D donde comprueba si en la fecha seleccionada, si la máquina está con qué capacidad, es decir, 0/1/2/3 y devolver ese valor.

Tengo 3 tablas en mi tablero. Una es la lista de máquinas, la otra es la fecha y la tercera es la programación de la máquina maitenace como se indica a continuación. He hecho esto en Excel con el anidamiento de múltiples función "IF", pero strugging para desarrollar power bi DAX para el mismo.

MáquinaFecha de inicio de Maint 1Fecha de finalización de Maint 1Fecha de inicio de Maint 2Fecha de finalización de Maint 2
Máquina 122-Sep-202-Oct-2016-Nov-2026-Nov-20
Máquina 23-Oct-2013-Oct-2027-Nov-207-Dic-20
Máquina 314-Oct-2024-Oct-208-Dic-2018-Dic-20
Máquina 425-Oct-204-Nov-2019-Dic-2029-Dic-20
Máquina 55-Nov-2015-Nov-2030-Dic-209-Enero-21

@ enlaces a los miembros

1 ACCEPTED SOLUTION

Accepted Solutions
Highlighted

Hola @Anil59060

Es posible que desee mostrar valores en esta lógica de cálculo:

Si DATE no está en la fecha SD, muestre los valores en tabla de mayúsculas (máquina específica).

Si Date en SD DATE, muestra 0.

Creo que puede probar la función IF para lograr su objetivo.

Construyo una mesa como la tuya para hacerme una prueba.

Tabla de mayúsculas:

1.png

Tabla SD:

2.png

Crear una tabla de fechas:

Date = ADDCOLUMNS(CALENDARAUTO(),"Month",FORMAT([Date],"MMM"))

Medida:

Machine 1 = 
VAR _SD_Start =
    CALCULATE ( MAX ( SD[SD Start] ), FILTER ( SD, SD[Machine] = "Machine 1" ) )
VAR _SD_End =
    CALCULATE ( MAX ( SD[ SD End] ), FILTER ( SD, SD[Machine] = "Machine 1" ) )
VAR _Value =
    CALCULATE ( SUM ( Cap[Machine 1] ), FILTER ( Cap, Cap[Month] = 'Date'[Month] ) )
RETURN
    IF ( 'Date'[Date] >= _SD_Start && 'Date'[Date] <= _SD_End, 0, _Value )

Resultado:

3.png

Otras medidas de la máquina son las mismas, sólo tiene que cambiar las tres medidas en var.

Puede descargar el archivo pbix desde este enlace: Devolver un valor si la fecha seleccionada está entre dos fechas

Saludos

Rico Zhou

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

View solution in original post

7 REPLIES 7
Highlighted
Super User II
Super User II

Su mesa es innecesariamente compleja. Transformarlo así

Máquina Fecha de inicio de Maint Fecha de finalización de Maint
Máquina 1 22-Sep-20 2-Oct-20
Máquina 2 3-Oct-20 13-Oct-20
Máquina 3 14-Oct-20 24-Oct-20
Máquina 4 25-Oct-20 4-Nov-20
Máquina 5 5-Nov-20 15-Nov-20
Máquina 1 16-Nov-20 26-Nov-20
Máquina 2 27-Nov-20 7-Dic-20
Máquina 3 8-Dic-20 18-Dic-20
Máquina 4 19-Dic-20 29-Dic-20
Máquina 5 30-Dic-20 9-Enero-21

A continuación, puede utilizar una columna o medida calculada (dependiendo de cómo desee filtrar) para identificar para cada día qué máquinas están en mantenimiento ese día, etc.

Highlighted

Thanks for reply. If you could help me with writing DAX for a calculated column to return capacity for selected machine if selected date is between SD start date and SD end date.

 

MachineSD TypeSD StartSD EndCapacity
Machine 1PMI22-Sep-202-Oct-200
Machine 2PMI3-Oct-2013-Oct-200
Machine 3PMI14-Oct-2024-Oct-200
Machine 4PMI25-Oct-204-Nov-200
Machine 5PMI5-Nov-2015-Nov-200
Highlighted

¿Su contador de capacidad siempre se restablece a cero el primero de enero?

Highlighted

Capacity of a machine is "0" when the machine is under maintenance i.e. between SD start date and SD end date. Machine capacity would be 30 when it is not under maintenance.

 

Thanks,

Anil

 

Highlighted

que entra en conflicto con su declaración inicial. Por favor, muestre el resultado esperado para un par de fechas alrededor de sus datos de muestra.

Highlighted

¡Hola!

Por favor, encuentre los detalles. Tengo un mes de la tabla de capacidad de la máquina. Si una máquina está en funcionamiento obtengo esta salida de cada máquina.

Cap.png

Cada máquina tiene un plan de mantenimiento como se indica a continuación. La capacidad de la máquina es cero durante el mantenimiento.

SD.png

Por lo tanto, en una 3a tabla quiero ver la capacidad disponible para cada fecha y para eso he puesto a continuación DAX: Ver un DAX para la máquina 2

Máquina 2 ?
Calcular
(
SUM ( Cap[Machine 2] ),
FILTRO (
TODO ( Cap ),
Cap[Month]- FORMAT('Date'[Date],"MMM")),
FILTRO(
ALL(SD),
O(
SD[Máquina]-"Máquina 2"&& SELECTEDVALUE('Date'[Date])<MIN(SD[SD Start ]),
SD[Máquina]-"Máquina 2"&&SELECTEDVALUE('Fecha'[Fecha])<MAX(SD[SD End])
)
)
)
con esto, tengo la intención de conseguir la capacidad diaria sabia de la máquina según la tabla de abajo;
Date.png
Sin embargo, mi DAX tiene algún problema en cuanto a las fechas en las que una máquina está en mantenimiento, obtengo la capacidad que no sea Cero.
Por favor, ayúdenme.
Highlighted

Hola @Anil59060

Es posible que desee mostrar valores en esta lógica de cálculo:

Si DATE no está en la fecha SD, muestre los valores en tabla de mayúsculas (máquina específica).

Si Date en SD DATE, muestra 0.

Creo que puede probar la función IF para lograr su objetivo.

Construyo una mesa como la tuya para hacerme una prueba.

Tabla de mayúsculas:

1.png

Tabla SD:

2.png

Crear una tabla de fechas:

Date = ADDCOLUMNS(CALENDARAUTO(),"Month",FORMAT([Date],"MMM"))

Medida:

Machine 1 = 
VAR _SD_Start =
    CALCULATE ( MAX ( SD[SD Start] ), FILTER ( SD, SD[Machine] = "Machine 1" ) )
VAR _SD_End =
    CALCULATE ( MAX ( SD[ SD End] ), FILTER ( SD, SD[Machine] = "Machine 1" ) )
VAR _Value =
    CALCULATE ( SUM ( Cap[Machine 1] ), FILTER ( Cap, Cap[Month] = 'Date'[Month] ) )
RETURN
    IF ( 'Date'[Date] >= _SD_Start && 'Date'[Date] <= _SD_End, 0, _Value )

Resultado:

3.png

Otras medidas de la máquina son las mismas, sólo tiene que cambiar las tres medidas en var.

Puede descargar el archivo pbix desde este enlace: Devolver un valor si la fecha seleccionada está entre dos fechas

Saludos

Rico Zhou

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

View solution in original post

Helpful resources

Announcements
Community Conference

Power Platform Community Conference

Check out the on demand sessions that are available now!

Community Conference

Microsoft Power Platform Communities

Check out the Winners!

secondImage

Create an end-to-end data and analytics solution

Learn how Power BI works with the latest Azure data and analytics innovations at the digital event with Microsoft CEO Satya Nadella.

Top Solution Authors