Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Administrator
4 years ago
Solved

Convertir SQL a DAX : Subconsulta

Hola a todos, estoy tratando de convertir el siguiente código SQL a DAX, pero estoy atascado con la implementación de la parte de subconsulta.
Estoy tratando de obtener el recuento de pacientes distintos en el rango seleccionado también tengo la cita reservada en el futuro.
El intervalo de fechas actual es del 1 de diciembre de 2021 al 31 de diciembre de 2021


seleccionar recuento(distinto patient_id)
de fact_appointment
donde appointment_date > '31-12-2021'
y patient_id en
(
seleccionar patient_id distintos
desde fact_appointment_detail
donde appointment_date entre '2021-12-01' y '2021-12-31'
)

Cualquier ayuda será buena.

  • Syndicate_Admin's avatar
    Syndicate_Admin
    4 years ago

    Anonymous ,

    Creo los siguientes datos de ejemplo.

    A continuación, cree la medida:

    CountID = 
    CALCULATE (
        DISTINCTCOUNT ( fact_appointment[patient_id] ),
        FILTER (
            fact_appointment,
            fact_appointment[appointment_date] > DATE ( 2021, 12, 31 )
                && fact_appointment[product_ID]
                    IN { "A123", "B234", "C345" }
                        && fact_appointment[patient_id]
                            IN CALCULATETABLE (
                                VALUES ( fact_appointment_detail[patient_id] ),
                                FILTER (
                                    fact_appointment_detail,
                                    fact_appointment_detail[product_ID]
                                        IN { "A123", "B234", "C345" }
                                            && fact_appointment_detail[appointment_date] >= DATE ( 2021, 12, 1 )
                                            && fact_appointment_detail[appointment_date] <= DATE ( 2021, 12, 31 )
                                )
                            )
        )
    )

    Si el problema aún no se resuelve, proporcione información detallada sobre el error o el resultado esperado que espera. Hágamelo saber de inmediato, esperando su respuesta.
    Saludos
    Winniz
    Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

4 Replies

  • @mathivananj,

    Pruebe esta medida:

    Patient Count =
    CALCULATE (
        DISTINCTCOUNT ( fact_appointment[patient_id] ),
        fact_appointment[appointment_date] > DATE ( 2021, 12, 31 ),
        fact_appointment_detail[appointment_date] >= DATE ( 2021, 12, 1 ),
        fact_appointment_detail[appointment_date] <= DATE ( 2021, 12, 31 )
    )

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Administrator

      Esta medida está devolviendo en blanco, no funciona

      Además, estoy intentando agregar otro filtro en el DAX
      SQL:
      seleccionar recuento(distinto patient_id)
      de fact_appointment
      donde appointment_date > '2021-12-31' y product_ID en {'A123','B234','C345'}
      y patient_id en
      (
      seleccionar patient_id distintos
      desde fact_appointment_detail
      donde appointment_date entre '2021-12-01' y '2021-12-31' y
      product_ID en {'A123','B234','C345'}
      )
      DAX probado para esta lógica:
      CALCULATE(DISTINCTCOUNT(fact_appointment[patient_id]),
      Filtro(ALL(fact_appointment),(
      fact_appointment[appointment_date] > MAX(fact_appointment[appointment_date]) && (
      fact_appointment[procedure_code] en {"A","C","D"}))),
      fact_appointment[office_patient_id] en
      (DISTINTO(fact_appointment[office_patient_id])))
      pero debería agregar la condición de filtro de la identificación del producto en la instrucción "IN", no puedo obtenerla.
      dax debería ser como
      CALCULATE(DISTINCTCOUNT(fact_appointment[patient_id]),
      Filtro(ALL(fact_appointment),(
      fact_appointment[appointment_date] > MAX(fact_appointment[appointment_date]) && (
      fact_appointment[product_ID] en {"A123","C234","D345"}))),
      fact_appointment[office_patient_id] en
      (DISTINTO(fact_appointment[office_patient_id]),
      fact_appointment[product_ID] en {"A123","C234","D345"}))

      • Syndicate_Admin's avatar
        Syndicate_Admin
        Administrator

        Anonymous ,

        Creo los siguientes datos de ejemplo.

        A continuación, cree la medida:

        CountID = 
        CALCULATE (
            DISTINCTCOUNT ( fact_appointment[patient_id] ),
            FILTER (
                fact_appointment,
                fact_appointment[appointment_date] > DATE ( 2021, 12, 31 )
                    && fact_appointment[product_ID]
                        IN { "A123", "B234", "C345" }
                            && fact_appointment[patient_id]
                                IN CALCULATETABLE (
                                    VALUES ( fact_appointment_detail[patient_id] ),
                                    FILTER (
                                        fact_appointment_detail,
                                        fact_appointment_detail[product_ID]
                                            IN { "A123", "B234", "C345" }
                                                && fact_appointment_detail[appointment_date] >= DATE ( 2021, 12, 1 )
                                                && fact_appointment_detail[appointment_date] <= DATE ( 2021, 12, 31 )
                                    )
                                )
            )
        )

        Si el problema aún no se resuelve, proporcione información detallada sobre el error o el resultado esperado que espera. Hágamelo saber de inmediato, esperando su respuesta.
        Saludos
        Winniz
        Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.