Si vienes de Excel, es probable que hayas visto o escuchado sobre las declaraciones IF y su nueva hermana, el IFERROR (o SI.ERROR).
Recuerdo la primera vez que vi una cadena condicional como la siguiente imagen:
Sin embargo, se veía mucho mejor como un diagrama que como una fórmula de Excel – funcionaba bien dentro de Excel.
La pregunta es… ¿cómo funcionan los condicionales en Power BI / Power Query? ¿Tenemos una función de IF? tal vez un IFERROR? ESTA es el artículo donde cubriré este tema.
¿Qué tipo de lógica condicional tenemos en Power BI / Power Query?
En esencia, tenemos 2 tipos de expresiones dentro del lenguaje M (también conocidas como «palabras clave»):
- expresión if (si) – essentially the same behavior as the IF function that we have in Excel
- controlador de errores – CASI igual que el IFERROR de Excel, pero incluso mejor.
En este artículo, cubriré la expresión if, cómo funciona y cómo usarla, y en una siguiente publicación de esta serie cubriremos el controlador de errores o IFERROR en Power BI / Power Query.
Declaración IF (SI) en Power BI / Power Query
El caso: Imagina una tabla simple como esta:
Lo que nos gustaría hacer es crear una nueva columna que debería tener el impuesto total de la transacción. Algunas líneas están sujetas a impuestos y otras no, por lo que la condición es la siguiente:
- Si la columna [Taxable?] es igual a “Yes”, entonces multiplicar el valor de [Tax] por el valor de la columna [Amount]
Recuerda que Power BI / Power Query es una herramienta orientada al usuario, por lo que tiene esta interfaz de usuario realmente agradable y única que proporciona una experiencia de usuario enriquecida.
Si no quieres aprender ningún código, puedes usar la Interfaz de Usuario (IU) para lograr casi el 80% de lo que deseas hacer cuando se trata de preparación de datos dentro de Power Query.
Primero usaremos el método orientado a la interfaz de usuario (IU).
Creando de una columna condicional mediante la interfaz de usuario de Power BI / Power Query
Si vas al menú «Agregar columna» (Add Column), verás el botón «Columna condicional» (Conditional Column):
Al hacer clic en él, aparecerá una nueva ventana llamada ventana «Agregar columna condicional» y se verá así:
¡Es genial! Pero déjame decirte cómo funciona.
En la parte superior izquierda verás un «Nombre de nueva columna» (New column name) y aquí es donde ingresarás el nombre de la nueva columna.
Luego vemos una fila que comienza con «if» (si) y ahí es donde ingresé a la lógica condicional, pero falta una pieza y esa es la salida.
Solo podemos ingresar un valor estático o seleccionar una columna. No tenemos una opción para ingresar una fórmula aquí, por lo que no podemos avanzar con esto. Lo primero que debemos hacer es crear esa columna y referirnos a esa columna una vez que esté en nuestra tabla.
Sigamos adelante y cerremos esta ventana por ahora y regresemos a la ventana de Edición de consultas o ventana de Power Query.
Podemos seleccionar ambas columnas y luego hacer una multiplicación simple a través del menú «Agregar columna»:
pero todavía hay una cosa más que debemos hacer y eso es alrededor de ese valor. Entonces, con el resultado de la operación anterior, seleccionamos esa columna y luego vamos al menú «Transformar» (Transform) y hacemos un redondeado de número desde allí:
y con ese valor ahora en la tabla, podemos volver a la columna condicional y simplemente ingresarlo de esta manera:
Después de esto, simplemente podemos eliminar la columna «Multiplicación» (Multiplication) y eso nos dará el siguiente resultado:
que es exactamente lo que estamos buscando.
Una de las advertencias de todo este proceso es que se basa en muchas capas o pasos porque no podemos ingresar la fórmula directamente desde la ventana de «Agregar columna condicional».
Que tal si pudiéramos hacer todos estos 4 pasos:
- Multiplicar las columnas
- Redondea el valor de la columna «Multiplicación» de la columna
- Crear una columna condicional
- Remover la columna «Multiplicación» ya que ya no es necesaria
en solo 1 paso en su lugar… ¿podría ser posible? ¡Seguro que lo es! Averigüemos cómo
Crear una columna condicional usando la ventana de la columna personalizada de Power BI / Power Query
Este método requiere que conozcas el código M, pero puedes ahorrar MUCHO tiempo y te ayudará a minimizar tu código para que no esté «inflado» y sea tan difícil de leer y entender después de que hayas terminado con él
En lugar de ir con la «Columna condicional» del menú «Agregar columna», vamos a ir con la «Columna personalizada» (Custom Column):
y ahora, gracias a todas las actualizaciones que Power Query ha estado recibiendo, es más fácil ingresar la fórmula que necesitamos directamente en la ventana de la columna personalizada. Solo mira esto:
La fórmula anterior hace la multiplicación y el redondeo, pero, ¿qué pasa con la instrucción if (si)?
En Power Query todo es sensible a mayúsculas y minúsculas. En este caso, la instrucción if debería verse exactamente así:
if [#»Taxable?»] = «Yes» then
Number.Round( [Tax] * [Amount], 2)
else 0
Observe cómo todas las partes de la sentencia if están coloreadas en azul. Para hacer un SI anidado, usaríamos el SI otra vez después de las demás, de nuevo, todo es sensible a las mayúsculas, así que tenlo en cuenta.
El resultado final debe verse así:
donde todo se hizo en solo 1 paso.
Asegúrate de revisar las siguientes partes de la serie donde veremos:
- Operadores lógicos y condicionales anidados.
- IFERROR en Power Query
Genial Miguel gracias por compartir tu conocimiento es de mucho apoyo
hola tengo unas tablas con estado por ejemplo situación de pedido 1,2,3 cada uno tiene un significado que los directivo no entienden no quiero llenarme de tablas con descripción , quiero crear columnas que condicione su valor, en base a otra tabla. agradezco su comentario.
Hola!
No estoy 100% de entender tu situación o hacia adonde deseas llegar, pero te invito a publicar tu escenario completo en nuestro foro en español:
https://foro.poweredsolutions.co/
BUEN DIA,
TENGO DOS TABLAS RELACIONADAS NECESITO CREAR UNA COLUMNA SIEMPRE Y CUANDO ESE CAMPO RELACIONADO SEAN IGUALES COMO PODRIA HACERLO
Hola!
Creo que estás hablando de un modelo de datos, ¿cierto? O te refieres a una fusión / combinación de consultas dentro de power query ?
Si es la última el artículo que estás leyendo te debe de funcionar.
Saludos!
Buen día:
Tengo una consulta, me piden que cree una dimensión donde pueda hacer agrupaciones de datos, esto se refiere a que cree una tabla nueva en Power BI, o se puede hacer dentro de una tabla ya existente?
Muchas Gracias.
Hola Horacio!
Realmente depende de la definición que manejes de dimensión y agrupación de datos. Hay veces que con DAX se puede resolver todo y otras donde sería necesario considerar adecuaciones a nivel de tu modelo de datos.
Te recomiendo publicar tu escenario completo en el foro oficial de Power BI para poder verlo en más detalle:
https://community.powerbi.com/t5/Translated-Spanish-Desktop/bd-p/pbi_spanish_desktop
Saludos!
buen dia, en mi editor de power query no me aparece para agregar la columna condicional como es su imagen , esto se debe a mi paquete office o lo sacaron para usar directamente la formula
Hola!
Creo que podría ser la versión del Power Query que manejas. Te recomiendo descargar el Power BI Desktop para poder ver la última versión del Power Query en la desktop – esa sería la mejor opción para comenzar a comparar qué tienes y qué funcionabilidad tal vez no tengas.
Saludos!
Estimado, buenas tardes. Tengo una columna(1) con 3 registros de texto, pero 1 vacío (ejemplo: pedro;»vacío»;javier), otra columna(2) con 3 registros con 2 vacíos (ejemplo: vacío, juan; vacío). Como hago para que en una columna(3) se unan los registros no vacíos (ejemplo: pedro; juan; javier)???
hola!
Creo que acá los conceptos del artículo no aplican. Realmente la solución depende de algunos factores que tal vez no tenga conocimiento sobre si los deseas considerar o no. Lo mejor sería que trabajaras ambas cadenas como listas y luego, de alguna forma, unieras las dos listas de acuerdo a su posición ordinal quedándote con 1 solo valor de cada columna.
Abajo te dejo el enlace del foro en español de Power BI donde puedes publicar to consulta con lujo de detalles:
https://community.powerbi.com/t5/Translated-Spanish-Desktop/bd-p/pbi_spanish_desktop
Saludos!
Hola, hago esta consulta porque no se donde buscar, tengo el Power BI desktop que se actualizar desde un archivo de Sharepoint, pero hay una columna de esa tabla que power bi no reconoce y directamente no aparece en el editor de power query,
Desde ya agradezco su comentario.
Saludos