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
Syndicate_Admin
Administrator
Administrator

¿Concatenación variable para key?

Buenas tardes a todos,

Así que estoy tratando de crear una columna calculada en mi tabla Citas que examine una tabla Ventas para determinar si se produjo una venta vinculada con una cita.

Tengo dos mesas:

Mesa de citas

Patient_ID

Appt_Date

¿La cita tenía Venta?

12345

1/1/2021

23456

1/5/2021

34567

1/10/2021

45678

1/20/2021

Tabla de ventas

Patient_IDPurchase_DateFactura haClave de concatenación = Ventas[Patient_ID]&Ventas[Purchase_Date]
123451/1/2021verdadero1234544197
234561/6/2021verdadero2345644202
345671/15/2021falso3456744211
456781/20/2021falso4567844216

Ahora el problema con el que me estoy enfrentando es que las citas[Appt_Date] no siempre coinciden con sales[Purchase_Date]. Si la Venta[Purchase_Date] está dentro de los 3 días posteriores a las Citas[Appt_Date], debe estar asociada a esa Fecha de aplicación.

Mi primer pensamiento fue:

¿La cita tenía Venta? =
IF (
LOOKUPVALUE (
Ventas[Factura HA],
Ventas[Clave de concatenación],
Citas[ID del paciente] & ( Citas[Fecha de aplicación]
|| Citas[Fecha de aplicación] + 1
|| Citas[Appt Date] + 2
|| Citas[Appt Date] + 3
|| Citas[Fecha de aplicación] - 1
|| Citas[Fecha de aplicación] - 2
|| Citas[Appt Date] - 3 )
) = TRUE,
"Cierto",
"Falso"
)


Pero esto no funciona. Todas las celdas leen "Falso".

¡Cualquier ayuda sería apreciada!

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Hola, @jcawley

Basándome en tu descripción, creé datos para reproducir tu scenairo. El archivo pbix se adjunta al final,

cita:

a1.png

ventas:

a2.png

Puede crear una columna calculada o una medida como se muestra a continuación.

Columna calculada:

Column = 
var c = 
COALESCE(
    COUNTROWS(
        FILTER(
            ALL(Sales),
            [Patient_ID]=EARLIER(Appointment[Patient_ID])&&
            ABS([Purchase_Date]-[Appt_Date])<=3
        )
    ),0
)
return
IF(
    c=0,
    FALSE(),
    TRUE()
)

medir:

Measure = 
var c = 
COALESCE(
    COUNTROWS(
        FILTER(
            ALL(Sales),
            [Patient_ID]=MAX(Appointment[Patient_ID])&&
            ABS([Purchase_Date]-MAX(Appointment[Appt_Date]))<=3
        )
    ),0
)
return
IF(
    c=0,
    FALSE(),
    TRUE()
)

resultado:

a3.png

Saludos

Allan

Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los demás miembros a encontrarla más rápidamente.

View solution in original post

6 REPLIES 6
Syndicate_Admin
Administrator
Administrator

hola

Muestre el resultado exacto que espera.

Syndicate_Admin
Administrator
Administrator

Hola, @jcawley

Basándome en tu descripción, creé datos para reproducir tu scenairo. El archivo pbix se adjunta al final,

cita:

a1.png

ventas:

a2.png

Puede crear una columna calculada o una medida como se muestra a continuación.

Columna calculada:

Column = 
var c = 
COALESCE(
    COUNTROWS(
        FILTER(
            ALL(Sales),
            [Patient_ID]=EARLIER(Appointment[Patient_ID])&&
            ABS([Purchase_Date]-[Appt_Date])<=3
        )
    ),0
)
return
IF(
    c=0,
    FALSE(),
    TRUE()
)

medir:

Measure = 
var c = 
COALESCE(
    COUNTROWS(
        FILTER(
            ALL(Sales),
            [Patient_ID]=MAX(Appointment[Patient_ID])&&
            ABS([Purchase_Date]-MAX(Appointment[Appt_Date]))<=3
        )
    ),0
)
return
IF(
    c=0,
    FALSE(),
    TRUE()
)

resultado:

a3.png

Saludos

Allan

Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los demás miembros a encontrarla más rápidamente.

Syndicate_Admin
Administrator
Administrator

Hey @jcawley ,

¿por qué no comprueba si el DATEDIFF entre las dos fechas es entre -3 y 3 días?

Si me enseñas cómo se ven las mesas puedo tratar de ayudarte con la fórmula.

Si necesitas ayuda, por favor avísame.
Si respondiera a su pregunta, estaría feliz si pudiera marcar mi publicación como una solución ✔️ y darle un pulgar hacia arriba 👍
Saludos
Denis

Oye @selimovd, no pude conseguir DATEDIFF para trabajar en este contexto! ¿Alguna otra idea?

Hey @jcawley ,

pruebe el siguiente código:

Appointment had Sale =
VAR vPatientID = Appointments[Patient_ID]
VAR vDate = Appointments[Appt_Date]
RETURN
    CALCULATE(
        COUNTROWS( Sales ),
        FILTER(
            Sales,
            Sales[Patient_ID] = vPatientID
                && DATEDIFF( Sales[Purchase_Date], vDate, DAY ) <= 3
                && DATEDIFF( vDate, Sales[Purchase_Date], DAY ) >= -3
        )
    )

Si necesitas ayuda, por favor avísame.
Si respondiera a su pregunta, estaría feliz si pudiera marcar mi publicación como una solución ✔️ y darle un pulgar hacia arriba 👍
Saludos
Denis

Voy a mirar en DATEDIFF, pero las mesas están arriba! Deberías poder verlos en mi post original.

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.