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.
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.
Solved! Go to Solution.
@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' )
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"
)
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 🙂
@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
@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.
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!
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
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |