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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Anil59060
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

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
lbendlin
Super User
Super User

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.

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

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

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

 

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.

¡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.

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.

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

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