Forum Discussion
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.
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
- Syndicate_AdminAdministrator
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_AdminAdministrator
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_AdminAdministrator
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.
- Syndicate_AdminAdministrator