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

Cálculo de valores de columna basados en la coincidencia de fecha entre tablas

Estoy intentando realizar un cálculo de columna que devolverá un valor basado en la última fecha de calibración de un instrumento antes de una comprobación de control de calidad. Tengo dos tablas, Calibración y Control de calidad, que están relacionadas por número de serie del instrumento. Para cada instrumento, puede haber varias fechas de calibración y comprobaciones de control de calidad, durante las cuales se genera un resultado (Xq). La columna calculada (cheque cal) debe comparar la diferencia entre la comprobación de control de calidad Xq y el resultado Xq de la última calibración antes de esa comprobación.

Ejemplo:

Calibración

SerialCal DateCal Xq
10014112/5/19 14:120.081
1001414/12/15 11:360.085
1002906/16/15 9:190.077
1003211/21/19 14:440.082
1003211/21/19 11:120.079
1006701/2/20 11:240.079
1006709/4/18 15:390.081

Qc

SerialFecha de QCCal DateQC XqCal Check
1001416/15/194/12/20150.081-4.71%
10014110/15/194/12/20150.082-3.53%
1001412/15/2012/5/20190.079-2.47%
1001416/15/2012/5/20190.08-1.23%
1002906/15/196/16/20150.0792.60%
10029010/15/196/16/20150.0781.30%
1002902/15/206/16/20150.0770.00%
1002906/15/206/16/20150.0770.00%
1003216/15/191/21/20190.08-2.44%
10032110/15/191/21/20190.081-1.22%
1003212/15/201/21/20190.079-3.66%
1003216/15/201/21/20190.0820.00%
1006706/15/199/4/20180.079-2.47%
10067010/15/199/4/20180.077-4.94%
1006702/15/201/2/20200.0823.80%
1006706/15/201/2/20200.0812.53%

Afortunadamente, hay una columna auxiliar en la tabla de control de calidad que enumera cuándo se realizó la última cal. Desafortunadamente, es sólo una fecha sin marca de tiempo, mientras que la columna Cal Date en la tabla Calibración incluye la hora, y puede haber varias entradas del mismo día. Si estuviera haciendo esto en Excel, usaría una matriz para que coincida con el número de serie y la fecha cal entre las dos tablas para devolver el Cal Xq adecuado y calcular la diferencia a partir de ahí. Si se ordenan de nuevo a más antiguo en la tabla, me dará el resultado correcto. Sin embargo, soy nuevo en Power BI y no he encontrado un método comparable para hacer esto con DAX.

Cualquier ayuda sería apreciada, gracias!

11 REPLIES 11
Highlighted
Super User IV
Super User IV

Re: Cálculo de los valores de columna en función de la coincidencia de fecha entre tablas

@dpatlak

Prueba esto como un comienzo. Agregue esta columna calculada a la tabla de control de calidad.

Cal Check Column = 
VAR _Serial = QC[Serial]
VAR _Date = QC[QC Date]
VAR _LastCal = CALCULATE(
    MAX (Calibration[Cal Date]),
    Calibration[Serial] = _Serial,
    Calibration[Cal Date] <= _Date
)
RETURN
CALCULATE(
    MAX(Calibration[Cal Xq]),
    Calibration[Serial] = _Serial,
    Calibration[Cal Date] = _LastCal
)-QC[QC Xq]

Highlighted
Regular Visitor

Re: Cálculo de los valores de columna en función de la coincidencia de fecha entre tablas

@jdbuchanan71

¡Definitivamente es un comienzo promining, gracias! Estoy recibiendo el error "No se puede determinar un valor único para la columna 'Serial' en la tabla 'QC'." debido a que hay varias entradas en la tabla para cada número de serie. El uso de una función MIN o MAX produce resultados incorrectos, ya que creo que está seleccionando valores asociados con fechas diferentes en ese caso. ¿Hay alguna manera de especificar que la variable solo utiliza el número de serie, la fecha y Xq de esa fila?

¡Agradezco la ayuda!

Highlighted
Solution Sage
Solution Sage

Re: Cálculo de los valores de columna en función de la coincidencia de fecha entre tablas

Hola @dpatlak ,

aquí hay dos columnas calc que creo que hacer el truco

last Cal Xq val = 
var serial = [Serial]
var calDate = [QC Date]
var maxDate = CALCULATE(MAX('Calibration'[Cal Date]), FILTER(Calibration, Calibration[Serial] = 'QC'[Serial] && Calibration[Cal Date] <= calDate ))
return 
CALCULATE(MAX('Calibration'[Cal Xq]), FILTER('Calibration', Calibration[Serial] = serial && Calibration[Cal Date] = maxDate))

var = DIVIDE([QC Xq], [last Cal Xq val])-1 

Espero que esto ayude


¿He respondido a tu pregunta? ¡Marca mi puesto como una solución!
¿Mis respuestas ayudaron a llegar a una solución? Dale un kudos haciendo clic en Thumbs Up!

Highlighted
Super User IV
Super User IV

Re: Cálculo de los valores de columna en función de la coincidencia de fecha entre tablas

@dpatlak

¿Lo está agregando como una columna calculada en la tabla de control de calidad, ¿sí? El VAR leerá la fila actual de la tabla en la que está trabajando.

Highlighted
Regular Visitor

Re: Cálculo de los valores de columna en función de la coincidencia de fecha entre tablas

Hola @richbenmintz,

¡Disculpas por la respuesta lenta! Me habían metido en otros proyectos y éste se quedó atrasado.

Estoy usando su solución de dos columnas que parece prometedora, pero obteniendo un error de dependencia circular para la segunda columna cuando intento la función DIVIDE.

Usando la información que se encuentra en https://community.powerbi.com/t5/Desktop/Row-Identifier-within-Power-BI-for-Desktop-Circular-depende... he estado intentando usar ALLEXCEPT en la función CALCULATE para corregir el error, pero no he tenido mucha suerte.

Gracias de nuevo por su ayuda!

Highlighted
Solution Sage
Solution Sage

Re: Cálculo de los valores de columna en función de la coincidencia de fecha entre tablas

puede compartir su pbix

Highlighted
Solution Sage
Solution Sage

Re: Cálculo de los valores de columna en función de la coincidencia de fecha entre tablas

Hola @dpatlak,

¿Puede compartir la fórmula Columna calculada que está generando la dependencia circular?

Highlighted
Regular Visitor

Re: Cálculo de los valores de columna en función de la coincidencia de fecha entre tablas

Las fórmulas que estoy usando son esencialmente lo que había sugerido anteriormente; por lo que la columna 1 devuelve la última calibración Xq según lo previsto:

Last Cal Xq = 
VAR _SERIAL = [SerialNumber]
VAR _RPCDATE = [TestDate]
VAR _MAXDATE = 
    CALCULATE(
        MAX(RECORDS_AD[Cal Date]), 
        FILTER(RECORDS_AD, RECORDS_AD[SerialNumber] = _SERIAL && RECORDS_AD[Cal Date] <= _RPCDATE)
        )
RETURN
    CALCULATE(
        MAX(RECORDS_AD[Xq]), 
        FILTER(RECORDS_AD, RECORDS_AD[SerialNumber] = _SERIAL && RECORDS_AD[Cal Date] = _MAXDATE)
        )

Pero la segunda columna que llamo "Off" da el error de dependencia circular:

Off = 
DIVIDE(RECORDS_RP[Xq], RECORDS_RP[Last Cal Xq])-1

Highlighted
Solution Sage
Solution Sage

Re: Cálculo de los valores de columna en función de la coincidencia de fecha entre tablas

Hola @dpatlak,

¿Cuál es la diferencia entre las tablas RECORDS_AD y RECORDS_RP? ¿Es RECORDS_RP[Xq] un cálculo que hace referencia a RECORDS_AD[Xq]?

Helpful resources

Announcements
Community Conference

Power Platform Community Conference

Check out the on demand sessions that are available now!

Upcoming Events

Experience what’s next for Power BI

See the latest Power BI innovations, updates, and demos from the Microsoft Business Applications Launch Event.

secondImage

Power Platform 2020 release wave 2 plan

Features releasing from October 2020 through March 2021

Get Ready for Power BI Dev Camp

Get Ready for Power BI Dev Camp

Mark your calendars and join us for our next Power BI Dev Camp!.

Top Solution Authors