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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
pshetty05
Helper I
Helper I

Convertir consulta SQL en expresión DAX

Hola gente,

Espero que te vaya bien.

¿Puede alguien ayudarme a convertir esta consulta SQL en expresión DAX?

SQL - Caso CUANDO ((CLIENT_STATUS ' 'SH' O PARTICIPANT_STATUS NO ES NULL) Y (TRUNC(LAD_EMAIL_OPEN) > SYSDATE -371)) O
(CLIENT_STATUS <> 'SH' Y PARTICIPANT_STATUS ES NULL Y (TRUNC(LAD_EMAIL_OPEN) > SYSDATE -186)) ENTONCES 'PASO' ELSE 'FALLO' FIN COMO QUALITY_CHECK

Aunque he podido trabajar en el no null mediante el uso de NOT(ISBLANK), pero truncate y fecha funciones están donde estoy mirando.

1 ACCEPTED SOLUTION
amitchandak
Super User
Super User

@pshetty05 , Pruebe una nueva columna como


QUALITY_CHECK de la casa de los
interruptor ( true(),
(([CLIENT_STATUS] á "SH" á not(isblank([PARTICIPANT_STATUS]))) && ([LAD_EMAIL_OPEN].date > today() -371))
([CLIENT_STATUS] <> "SH" && isblank([PARTICIPANT_STATUS]) && ([LAD_EMAIL_OPEN].date > today() -186)) ,
'PASS' , 'FAIL' )

View solution in original post

7 REPLIES 7
AllisonKennedy
Super User
Super User

@pshetty05

Como ya ha sugerido @Greg_Deckler, podría obtener mejores respuestas si describe lo que está tratando de lograr, ya que no todos en este foro están bien versados en SQL y DAX, por lo que los expertos de DAX pueden incluso ser capaces de encontrar una manera más eficiente de resolver que sólo una traducción directa.

No soy fuerte en Oracle, pero siempre dispuesto a estirar mi cerebro, así que aquí está mi mejor intento de una traducción directa.

Esto parece una sola instrucción case, por lo que podría usar una función IF() aquí en lugar de SWITCH, pero no conozco sus requisitos completos y SWITCH es el equivalente DAX más cercano a CASE, IF() sería el DAX para IIF en SQL, así que me he mantenido fiel a su código SQL aquí.

¿Tampoco entiendo completamente sus requisitos de fecha y por qué necesita truncar? ¿Puede utilizar el valor de fecha y hora completo y cambiar el número de días que resta de él? También puede querer/necesitar utilizar la función NOW() en su lugar o incluso puede ser capaz de simplificar esto aún más, por lo que si puede explicar el razonamiento podemos proporcionar un mejor soporte.

COMPROBACIÓN DE LA CALIDAD DE LA CALIDAD DE LA CALIDAD
Interruptor (
Verdad (),
(
(
tabla[CLIENT_STATUS] "SH"
|| No ( ISBLANK ( tabla[PARTICIPANT_STATUS] ) )
)
&& (
Fecha ( año ( tabla[LAD_EMAIL_OPEN] ), Mes ( tabla[LAD_EMAIL_OPEN] ), Día ( tabla[LAD_EMAIL_OPEN] ) )
> Hoy () - 371
)
)
|| (
tabla[CLIENT_STATUS] <> "SH"
&& ISBLANK ( tabla[PARTICIPANT_STATUS] )
&& (
Fecha ( año ( tabla[LAD_EMAIL_OPEN] ), Mes ( tabla[LAD_EMAIL_OPEN] ), Día ( tabla[LAD_EMAIL_OPEN] ) )
> Hoy () - 186
)
), "PASO",
"FALLO"
)


Please @mention me in your reply if you want a response.

Copying DAX from this post? Click here for a hack to quickly replace it with your own table names

Has this post solved your problem? Please Accept as Solution so that others can find it quickly and to let the community know your problem has been solved.
If you found this post helpful, please give Kudos C

I work as a Microsoft trainer and consultant, specialising in Power BI and Power Query.
www.excelwithallison.com

@AllisonKennedy ¡Gracias! Esta lógica también sirve a mi propósito. Tendré presente que es más preciso al publicar una nueva pregunta 🙂

amitchandak
Super User
Super User

@pshetty05 , Pruebe una nueva columna como


QUALITY_CHECK de la casa de los
interruptor ( true(),
(([CLIENT_STATUS] á "SH" á not(isblank([PARTICIPANT_STATUS]))) && ([LAD_EMAIL_OPEN].date > today() -371))
([CLIENT_STATUS] <> "SH" && isblank([PARTICIPANT_STATUS]) && ([LAD_EMAIL_OPEN].date > today() -186)) ,
'PASS' , 'FAIL' )

@amitchandak Lo probé de la misma manera, pero mediante el uso de IF

IF(((Core_Universe[INDV_CLIENT_STATUS] á "SH" NOT(ISBLANK(Core_Universe[PARTICIPANT_STATUS])) && (Core_Universe[LAD_EMAIL_OPEN].[ Fecha]>Hoy()-371))
(Core_Universe[INDV_CLIENT_STATUS] <> "SH" && ISBLANK(Core_Universe[PARTICIPANT_STATUS]) && (Core_Universe[LAD_EMAIL_OPEN].[ Fecha]>Today()-186))), "PASS", "FAIL")
Gracias 🙂
Greg_Deckler
Super User
Super User

@pshetty05: generalmente funcionan mejor si publica una muestra de los datos y la salida esperada. Por lo general, es probable que desee una instrucción SWITCH(TRUE()...) en DAX o una instrucción if then else en Power Query. TRUNC es una sentencia de Oracle que devuelve algún tipo de fecha, ¿correcto??

No es realmente suficiente información para seguir adelante, por favor primero compruebe si su problema es un problema común enumerado aquí: https://community.powerbi.com/t5/Community-Blog/Before-You-Post-Read-This/ba-p/1116882

Además, consulte este post sobre cómo obtener respuesta a su pregunta rápidamente: https://community.powerbi.com/t5/Community-Blog/How-to-Get-Your-Question-Answered-Quickly/ba-p/38490

Las partes más importantes son:
1. Datos de muestra como texto, utilice la herramienta de tabla en la barra de edición
2. Salida esperada de los datos de muestra
3. Explicación en palabras de cómo obtener de 1. a 2.


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
Mastering Power BI 2nd Edition

DAX is easy, CALCULATE makes DAX hard...

Hola @Greg_Deckler Gracias por compartir los enlaces, sería muy útil!

En cuanto a mi problema, la función Trunc se utiliza para truncar la hora y conservar la fecha.

Tengo una columna LAD_EMAIL_OPEN que tiene fecha y hora, así que estoy buscando una función similar a TRUNC() en oracle.

También quiero comprobar si esta fecha es dentro de 371 días. Por lo tanto, he utilizado SYSDATE - 371 es mayor que LAD_EMAIL_OPEN donde SYSDATE es la fecha/fecha actual del sistema.

Resto de la consulta, puedo administrar - Es sólo la parte de fecha donde estoy atascado.

¡Espero que eso lo aclare!

Puede utilizar la función FORMAT() en dax para convertir la fecha en texto y truncar. Podrías usar el nombre de columna. [fecha] o puede utilizar las funciones de parte de fecha Year, MONTH, DAY.

Todavía no entiendo por qué es necesario truncar el tiempo de esta columna, pero supongo que no necesito entender eso.

También puede agregar esta columna truncada en Power Query, en la pestaña Agregar columna de la cinta de opciones, hay algunos botones muy útiles para obtener información de fecha, hora, hora, etc. de fechas.

Please @mention me in your reply if you want a response.

Copying DAX from this post? Click here for a hack to quickly replace it with your own table names

Has this post solved your problem? Please Accept as Solution so that others can find it quickly and to let the community know your problem has been solved.
If you found this post helpful, please give Kudos C

I work as a Microsoft trainer and consultant, specialising in Power BI and Power Query.
www.excelwithallison.com

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

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

Top Solution Authors