Declaración If de Power Query: condiciones anidadas y múltiples

Índice
  1. Sintaxis básica de la declaración if
  2. Guión
  3. Power Query If declaración usando una columna condicional
    1. Ejemplo 1: declaración if básica
    2. Opciones de columna condicional
    3. Ejemplo 2: declaración if compleja
    4. Limitaciones de columnas condicionales
  4. Power Query if declaración escribiendo el código M
    1. Declaraciones if anidadas
    2. Usando la lógica "Y"
    3. Usando la lógica "O"
    4. Uso de “O” y “Y” – orden de precedencia
    5. Operadores de comparación alternativos
    6. No operador para invertir el valor
    7. Ejemplo 3: declaración if básica
    8. Ejemplo 4: declaración if compleja
    9. Errores comunes de sintaxis de declaraciones if
  5. Conclusión

En una publicación anterior de esta serie, analizamos brevemente la declaración if en Power Query ; Ahora, vamos a profundizar un poco más y comprender cómo funciona la declaración if de Power Query.

En Excel, SI es una función central; Es una de las primeras funciones que aprendemos y sigue siendo popular entre los usuarios avanzados. Si la lógica nos permite comparar valores y seguir caminos diferentes según el resultado de esa comparación.

En una publicación anterior, analizamos las funciones en Power Query , pero no cubrimos una función IF de Power Query. Seguramente hay una función if?... ¿verdad?... bueno, más o menos.

Para usar Power Query si es lógico, necesitamos un enfoque basado en programación en lugar del enfoque basado en funciones que encontramos en Excel. Estará familiarizado con este método si alguna vez ha programado VBA u otros lenguajes. Sin embargo, esto puede ser nuevo para usted si proviene de un mundo puramente Excel.

Hay dos formas de crear este tipo de lógica condicional en Power Query:

  1. Uso de la función de columna condicional para escenarios básicos
  2. Escribir código M para escenarios más avanzados

Cubriremos ambos en esta publicación.

Tabla de contenido
  • Sintaxis básica de la declaración if
  • Guión
  • Power Query If declaración usando una columna condicional
    • Ejemplo 1: declaración if básica
    • Opciones de columna condicional
    • Ejemplo 2: declaración if compleja
    • Limitaciones de columnas condicionales
  • Power Query if declaración escribiendo el código M
    • Declaraciones if anidadas
    • Usando la lógica "Y"
    • Usando la lógica "O"
    • Uso de “O” y “Y” – orden de precedencia
    • Operadores de comparación alternativos
    • No operador para invertir el valor
    • Ejemplo 3: declaración if básica
    • Ejemplo 4: declaración if compleja
    • Errores comunes de sintaxis de declaraciones if
  • Conclusión

Descargue el archivo de ejemplo: únase al programa Insiders gratuito y obtenga acceso al archivo de ejemplo utilizado para esta publicación.

Nombre de archivo: 0115 Power Query si declaración.xlsx

Tener acceso

Sintaxis básica de la declaración if

La sintaxis de la declaración de Power Query si es diferente a la de Excel.

En Excel, la función SI tiene la siguiente sintaxis:

IF(logical_test, value_if_true, [value_if_false])
  • prueba_lógica : la condición que desea probar.
  • value_if_true : el valor que se devolverá si el resultado de la prueba lógica es VERDADERO.
  • value_if_false (opcional): el valor que se devolverá si el resultado de la prueba lógica es FALSO. Donde el argumento not proporcionó el valor devuelto si es Falso.

Sin embargo, en Power Query, la sintaxis es:

if logical_test then value_if_true else value_if_false

Entonces, si vienes del mundo de Excel, inicialmente podrías pensar en esto como una función SI con los siguientes ajustes:

  • quitar corchetes
  • cambie la primera coma a luego
  • cambiar la segunda coma a otra cosa
  • cambiar si por si

Una vez que lo haya leído varias veces, lo dominará. La sintaxis de Power Query tiene la ventaja adicional de sonar como una oración estándar, lo que la hace más fácil de leer que el equivalente de Excel.

Un punto clave a tener en cuenta es que Power Query distingue entre mayúsculas y minúsculas; if , entonces y else deben estar en minúsculas.

Guión

El archivo de ejemplo Power Query If Statement.xlsx contiene solo una tabla, que ya se ha cargado en Power Query. Luego se agregó una columna adicional de Nombre del día a esa consulta.

Para ver la consulta, haga clic en Conexiones de consultas de datos en la cinta y luego haga doble clic en la consulta Datos de ventas en el panel Conexiones de consultas .

Datos de muestra para ejemplos

En este ejemplo, calcularemos el valor suponiendo lo siguiente:

  • Escenario 1 : Los domingos tienen una prima adicional del 10% (requiere lógica básica)
  • Escenario 2 : los domingos tienen una prima adicional del 10 % y dos productos (Tiger Farmhouse Bloomer) también obtienen un descuento del 5 % ese día (requiere lógica avanzada).

Power Query If declaración usando una columna condicional

Comencemos con el Escenario 1 y usemos la función Columna condicional en la interfaz de usuario.

Ejemplo 1: declaración if básica

En nuestro primer escenario, queremos agregar una prima del 10% por las ventas del domingo.

Para usar una columna condicional, haga clic en Agregar columna Columna condicional en la cinta.

Agregar columna: columna condicional desde la cinta

Ingrese las siguientes opciones en el cuadro de diálogo Agregar columna condicional :

  • Nuevo nombre de columna: % prima
  • Si el nombre del día es igual a domingo , entonces 0,1 o 0
  • Haga clic en Aceptar para aceptar la fórmula.

Cuadro de diálogo Agregar columna condicional

Ahora tenemos nuestra consulta con la columna condicional:

% Columna condicional de prima

Además, eche un vistazo a la barra de fórmulas; esto coincide con la sintaxis que vimos antes:

= Table.AddColumn(#"Inserted Day Name", "% Premium", each if [Day Name] = "Sunday" then 0.1 else 0)

Opciones de columna condicional

Solo hemos usado algunas opciones en el cuadro de diálogo Columna condicional en el escenario.

Dependiendo del tipo de datos de la columna seleccionada en el campo Nombre de columna , los operadores cambian:

Texto Número Fecha
Igual
No es igual
Comienza con
No comienza con
Termina con
No termina con
Contiene
No contiene
Igual a
No es igual
Mayor que
Mayor o igual a
Menor que
Menor o igual a
Igual
No es igual
Es antes
Es antes o igual a
Es después
Es después o igual a
Está en el siguiente
Está en el anterior
Es el más temprano
Es el último
No es el más temprano
No es el último
Está en el año

Una característica interesante del cuadro de diálogo Agregar columna condicional es que podemos hacer clic en el botón 123ABC para insertar valores o parámetros de columna en lugar de valores codificados.

Devolver columnas o parámetros, no solo valores codificados

Ejemplo 2: declaración if compleja

En el escenario 2, los domingos tienen un 10% de prima y dos productos tienen un 5% de descuento. Esto añade la complejidad de condiciones adicionales.

Además, podemos crear tantas declaraciones if anidadas como queramos haciendo clic en el botón Agregar cláusula en el cuadro de diálogo Columna condicional.

Las declaraciones If ejecutan cada condición por turno. Cuando la primera instrucción if no se activa, se pasa a la segunda, luego a la tercera, y así sucesivamente. Sin embargo, una vez que una declaración if se evalúa como verdadera, se omite la lógica restante.

Si intentamos utilizar la función Columna condicional con dos o más condiciones, las cosas pueden complicarse. Por eso debemos pensar de manera diferente acerca de la lógica.

Lo siguiente proporcionaría la lógica relevante para nuestro escenario:

Agregar columna condicional con criterios avanzados

Limitaciones de columnas condicionales

Como se demostró anteriormente, las columnas condicionales son útiles para escenarios básicos. Pero están limitados para usos avanzados. Algunas de las limitaciones son:

  • No es posible utilizar múltiples condiciones con y o lógica .
  • No se puede utilizar el operador not para revertir el resultado verdadero/falso
  • Solo puede devolver los resultados especificados. Se requieren pasos de consulta adicionales para utilizar el resultado de la declaración if.

Por lo tanto, debemos escribir el código M nosotros mismos dentro de una columna personalizada para escenarios más complejos.

Power Query if declaración escribiendo el código M

No te preocupes; Sé que el código M puede parecer desalentador. Creo en ti. Tú puedes hacer esto.

Ya hemos visto la sintaxis básica para escribir una declaración if:

if logical_test then value_if_true else value_if_false

A menos que tengamos un escenario simple, probablemente encontraremos if anidado , incluyendo and and or logic. Entonces, echemos un vistazo a cada uno de estos.

Una vez que hayamos analizado la sintaxis, la aplicaremos a nuestros dos escenarios.

Declaraciones if anidadas

A menudo es posible que queramos probar subcondiciones; para esto usamos una declaración if anidada.

Nota: El interlineado se ha agregado en muchos de los ejemplos. Esto es para que el código sea más fácil de leer, pero no es necesario que el código sea válido.

La siguiente sintaxis prueba la prueba_lógica1. Si es verdadero, se devuelve value_if_true; de lo contrario, se prueba la prueba_lógica2, lo que conduce a otra prueba con dos resultados posibles.

if logical_test1 then value1_if_true else  if logical_test2 then value2_if_true else value2_if_false

En el caso anterior anidado, hay 3 resultados posibles. Pero en escenarios más complejos, podría haber cualquier cantidad de resultados.

Por ejemplo, la siguiente sintaxis maneja una subcondición dentro del primer resultado verdadero y múltiples subcondiciones dentro del primer resultado falso.

if logical_test1 then   if logical_test2 then value2_if_true else value2_if_falseelse  if logical_test3 then value3_if_true else     if logical_test4 then value4_if_true else value4_if_false

Esto ilustra que podemos crear una lógica compleja cuando escribimos el código M.

Usando la lógica "Y"

La lógica "Y " nos permite realizar múltiples pruebas lógicas dentro de una sola declaración if. Todas las pruebas deben ser verdaderas para que se devuelva el resultado verdadero . Si alguna de las pruebas es falsa , se devuelve el resultado falso .

La siguiente sintaxis realiza dos pruebas usando y lógica.

if logical_test1 and logical_test2 then value_if_true else value_if_false

Usando la lógica "O"

La lógica "O" realiza múltiples pruebas lógicas, pero solo requiere una única respuesta verdadera para devolver el resultado verdadero . Todas las pruebas deben ser falsas para devolver la respuesta falsa .

La sintaxis siguiente devuelve el resultado verdadero si prueba_lógica1 o prueba_lógica2 es verdadera . De lo contrario, devuelve el resultado falso .

if logical_test1 or logical_test2 then value_if_true else value_if_false

Uso de “O” y “Y” – orden de precedencia

Cuando se utilizan la lógica or y en una sola declaración if, ¿cuál se evalúa primero?

Mire la declaración a continuación. ¿Devolverá “Verdadero” o “Falso”?

if 1=1 or 2=2 and 1=3 then "True" else "False"

Es útil pensar en los operadores como elementos matemáticos.

  • o = suma
  • y = multiplicación

Además, piensa que:

  • Verdadero = 1
  • Falso = 0

Cuando pensamos así, se puede utilizar la precedencia matemática normal (es decir, la multiplicación ocurre antes que la suma).

  • 1=1 = Verdadero = 1
  • 2=2 = Verdadero = 1
  • 1=3 = Falso = 0

El cálculo matemático queda: 1 + 1 * 0 = 1

Por tanto, el resultado es Verdadero .

En este tipo de escenarios, recomiendo utilizar corchetes (o paréntesis, como se les puede llamar) para simplificar el orden de cálculo.

Operadores de comparación alternativos

En todos nuestros ejemplos, hemos usado igual como operador lógico, pero también podemos usar otros operadores lógicos.

  • = : Igual a
  • : No igual a
  • : Mas grande que
  • = : Mayor o igual que
  • : Menos que
  • = : Menor o igual a

No operador para invertir el valor

La última pieza de la sintaxis lógica es la declaración not . No invierte el resultado verdadero/falso de la prueba lógica.

Por ejemplo, la siguiente sintaxis invierte el resultado de la prueba lógica. Si el resultado de la prueba lógica es verdadero, se revierte a falso y viceversa.

si no es prueba_lógica, entonces valor_si_verdadero, de lo contrario valor_si_falso

Con todo este conocimiento, podemos empezar a escribir nuestras propias declaraciones if usando código M.

Ejemplo 3: declaración if básica

Repasemos el escenario 1. Nuestro objetivo es agregar una prima del 10 % para todas las ventas del domingo.

Agregue una columna personalizada a la tabla haciendo clic en Agregar columna Columna personalizada

Agregar columna: columna personalizada

Introduzca la siguiente:

Nuevo nombre de columna: % prima

Fórmula de columna personalizada :

=if [Day Name] = "Sunday" then 0.1 else 0

Columna personalizada con ejemplo simple

Recuerda prestar mucha atención a las palabras si , entonces y si no ; todos deben estar en minúsculas. Power Query distingue entre mayúsculas y minúsculas, por lo que si nos equivocamos, la fórmula no funcionará. Además, observe que Power Query resalta estas palabras en azul para mostrar que son palabras clave.

Con suerte, estará de acuerdo en que este es un método intuitivo para escribir una declaración if.

Eso es todo. Haga clic en Aceptar para agregar la nueva columna a nuestra consulta.

Ejemplo 4: declaración if compleja

A continuación, revisemos el escenario 2. Los domingos tienen una prima del 10 % y dos productos tienen un descuento del 5 %.

Hay varias formas de escribir esta fórmula. Según nuestro conjunto de datos, hay tres resultados posibles para este escenario:

  • Descuento del domingo en productos premium.
  • Prima dominical solo
  • Sin prima ni descuento

Solución n.º 1: anidado si + o

=if [Day Name] = "Sunday" then   if [Product] = "Tiger"     or [Product] = "Farmhouse Bloomer" then     0.05  else     0.1else  0

Agregar columna condicional con criterios avanzados

Solución #2: Y, O + Anidado si

Aquí hay otra solución que podríamos probar.

if [Day Name] = "Sunday"   and ([Product] = "Tiger"     or [Product] = "Farmhouse Bloomer")then   0.05 else if [Day Name]  "Sunday"then   0else     0.1

Solución n.° 3: anidada si solo

Podríamos usar una lógica similar a la columna condicional que creamos anteriormente.

=if [Day Name]  "Sunday" then 0 else  if [Product] = "Tiger" then 0.05 else     if [Product] = "Farmhouse Bloomer" then 0.05    else 0.1

Power Query siempre utiliza de forma predeterminada el cuadro de diálogo Columna condicional si puede. Por lo tanto, si usamos la fórmula anterior y luego editamos el paso, Power Query abrirá el cuadro de diálogo Columna condicional en lugar del cuadro de diálogo Columna personalizada .

Solución n.º 4: uso de funciones de Power Query

Finalmente, como tenemos una lista de dos productos, podríamos usar una función que devuelva un resultado verdadero/falso. En el siguiente ejemplo, utilizamos la función List.Contains.

=if [Day Name] = "Sunday"     and List.Contains({"Tiger", "Farmhouse Bloomer"}, [Product]) then 0.05 else  if [Day Name] = "Sunday" then 0.1  else 0

Obtenga más información sobre List.Contains aquí: https://learn.microsoft.com/en-us/powerquery-m/list-contains

Hay muchas maneras en que podríamos abordar esta solución. Los métodos anteriores proporcionan ejemplos de los diversos enfoques que podríamos adoptar.

Errores comunes de sintaxis de declaraciones if

El cuadro de diálogo Columna personalizada proporciona una verificación de sintaxis en la parte inferior. Sin embargo, los mensajes de error pueden resultar difíciles de entender. A continuación se muestra una lista de los mensajes de error más comunes y su significado.

  • Token Eof esperado : la palabra if no está en minúsculas y Power Query no la reconoce.
  • Token Entonces esperado : falta la palabra entonces o no está toda en minúsculas.
  • Se espera token más : falta la palabra más o no está toda en minúsculas.
  • Literal no válido : las comillas dobles de una cadena de texto no se han cerrado
  • Token interno esperado : faltan los argumentos logic_test, value_if_true o value_if_false, o una fórmula contenida en estos argumentos está incompleta.

Conclusión

Lógica condicional con una Power Query si la declaración es diferente. Una vez que entendemos la sintaxis, no es difícil de entender; sólo requiere práctica.

Leer más publicaciones en esta serie

  1. Introducción a Power Query
  2. Obtener datos en Power Query: cinco fuentes de datos comunes
  3. DataRefresh Power Query en Excel: 4 formas de opciones avanzadas
  4. Utilice el editor de Power Query para actualizar consultas
  5. Conozca las opciones de Power Query Cerrar Carga
  6. Parámetros de Power Query: 3 métodos
  7. Transformaciones comunes de Power Query (más de 50 transformaciones poderosas explicadas)
  8. Anexar Power Query: combine rápidamente muchas consultas en 1
  9. Obtenga datos de una carpeta en Power Query: combine archivos rápidamente
  10. Listar archivos en una carpeta subcarpetas con Power Query
  11. Cómo obtener datos del libro actual con Power Query
  12. Cómo desvincular en Excel usando Power Query (3 formas)
  13. Power Query: valor de búsqueda en otra tabla con combinación
  14. Cómo cambiar la ubicación de los datos de origen en Power Query (7 formas)
  15. Fórmulas de Power Query (cómo usarlas y errores que se deben evitar)
  16. Declaración If de Power Query: condiciones anidadas ifs múltiples
  17. Cómo utilizar Power Query Group By para resumir datos
  18. Cómo utilizar las funciones personalizadas de Power Query
  19. Power Query: errores comunes, cómo solucionarlos
  20. Power Query: consejos y trucos

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Este sitio web utiliza cookies para mejorar la experiencia del usuario y garantizar un funcionamiento eficiente. Al utilizar nuestro sitio web, aceptas todas las cookies de acuerdo con nuestra política de cookies. Leer mas...