Compartir a través de


Control de errores

Al igual que excel y el lenguaje DAX tienen una IFERROR función, Power Query tiene su propia sintaxis para probar y detectar errores.

Como se mencionó en el artículo sobre cómo tratar errores en Power Query, los errores pueden aparecer a nivel de paso o celda. Este artículo se centra en cómo detectar y administrar errores en función de su propia lógica específica.

Nota:

Para demostrar este concepto, en este artículo se usa un libro de Excel como origen de datos. Los conceptos que se muestran aquí se aplican a todos los valores de Power Query y no solo a los procedentes de un libro de Excel.

El origen de datos de ejemplo de esta demostración es un libro de Excel con la tabla siguiente.

Captura de pantalla de datos de ejemplo de un libro de Excel que contiene tres errores.

Esta tabla de un libro de Excel tiene errores de Excel, como #NULL!, #REF!, y #DIV/0! en la columna Tasa estándar . Al importar esta tabla en el editor de Power Query, en la imagen siguiente se muestra cómo se ve.

Captura de pantalla de la tabla de ejemplo cargada en Power Query.

Observe cómo los errores del libro de Excel se muestran con el valor [Error] en cada una de las celdas.

En este artículo, aprenderá a reemplazar un error por otro valor. Además, también aprenderá a detectar un error y a usarlo para su propia lógica específica.

Proporcione un valor alternativo al buscar errores.

En este caso, el objetivo es crear una nueva columna Tasa final en el origen de datos de ejemplo que usa los valores de la columna Tasa estándar . Si hay algún error, usa el valor de la columna Tasa especial correspondiente.

Para crear una nueva columna personalizada, vaya al menú Agregar columna y seleccione Columna personalizada. En la ventana Columna personalizada , escriba la fórmula try [Standard Rate] otherwise [Special Rate]. Asigne a esta nueva columna el nombre Tasa final.

Captura de pantalla con el cuadro de diálogo Columna personalizada abierto y una fórmula 'try otherwise' ingresada en la columna personalizada.

Esta fórmula intenta evaluar la columna Tasa estándar y genera su valor si no se encuentra ningún error. Si se encuentran errores en la columna Tasa estándar , la salida es el valor definido después de la otherwise instrucción , que en este caso es la columna Tasa especial .

Después de agregar los tipos de datos correctos a todas las columnas de la tabla, en la imagen siguiente se muestra el aspecto de la tabla final.

Captura de pantalla de la tabla con los errores de tarifa estándar reemplazados por la tarifa especial en la columna Tarifa final.

Nota:

Como enfoque alternativo, también puede escribir la fórmula try [Standard Rate] catch ()=> [Special Rate], que es equivalente a la fórmula anterior, pero mediante la palabra clave catch con una función que no requiere parámetros.

La catch palabra clave se introdujo en Power Query en mayo de 2022.

Proporcione su propia lógica condicional de errores

Con el mismo origen de datos de ejemplo que la sección anterior, el nuevo objetivo es crear una nueva columna para la tasa final. Si el valor de la tasa estándar existe, se usa ese valor. De lo contrario, se usa el valor de la columna Tasa especial , excepto para las filas con cualquier #REF! error.

Nota:

El único propósito de excluir el #REF! error es para fines de demostración. Con los conceptos mostrados en este artículo, puede dirigirse a cualquier área de su elección desde el registro de errores.

Al seleccionar cualquier espacio en blanco junto al valor de error, obtendrá el panel de detalles en la parte inferior de la pantalla. El panel de detalles contiene el motivo del error, DataFormat.Errory el mensaje de error: Invalid cell value '#REF!'

Captura de pantalla del error seleccionado, con un mensaje de error en la parte inferior del cuadro de diálogo.

Solo puede seleccionar una celda a la vez, por lo que solo puede examinar eficazmente los componentes de error de un valor de error a la vez. En este momento, se crea una nueva columna personalizada y se usa la try expresión .

Uso try con lógica personalizada

Para crear una nueva columna personalizada, vaya al menú Agregar columna y seleccione Columna personalizada. En la ventana Columna personalizada , escriba la fórmula try [Standard Rate]. Asigne a esta nueva columna el nombre Todos los errores.

Captura de pantalla con el cuadro de diálogo de Columna Personalizada abierta y una fórmula try ingresada en la columna personalizada.

La try expresión convierte valores y errores en un valor de registro que indica si la try expresión controló un error o no, y el valor adecuado o el registro de error.

Captura de pantalla de la tabla con la columna Todos los errores agregados y los errores mostrados como Registros.

Puede expandir esta columna recién creada con valores de registro y examinar los campos disponibles que se van a expandir seleccionando el icono situado junto al encabezado de columna.

Captura de pantalla de la columna Todos los errores con el icono de expansión resaltado y los cuadros HasError, Valor y Error seleccionados.

Esta operación expone tres campos nuevos:

  • Todos los errores.HasError: muestra si el valor de la columna Standard Rate tenía un error o no.
  • Todos los errores.Valor, si el valor de la columna Tasa estándar no tenía ningún error, esta columna muestra el valor de la columna Tasa estándar . En el caso de los valores con errores, este campo no está disponible y, durante la operación de expansión, esta columna tiene null valores.
  • Todos los errores.Error: si el valor de la columna Standard Rate tiene un error, esta columna muestra el registro de error para el valor de la columna Standard Rate . En el caso de los valores sin errores, este campo no está disponible y, durante la operación de expansión, esta columna tiene null valores.

Captura de pantalla de la tabla con los nuevos campos de columnas, con un valor All.Errors.Error seleccionado y mostrando los mensajes de error debajo de la tabla.

Para una investigación más detallada, puede expandir la columna Todos los errores.Error para obtener los tres componentes del registro de error:

  • Motivo del error
  • Mensaje de error
  • Detalles del error

Después de realizar la operación de expansión, el campo Todos los errores.Error.Message muestra el mensaje de error específico que indica exactamente qué error de Excel tiene cada celda. El mensaje de error se deriva del campo Mensaje de error del registro de error.

Captura de pantalla con los mensajes de error específicos mostrados.

Ahora, con cada mensaje de error de una nueva columna, puede crear una nueva columna condicional con el nombre Tasa final y las cláusulas siguientes:

  • Si el valor de la columna Todos los Errores.Error.Message es igual a null, la salida es el valor de la columna Tasa estándar.
  • Si no, si el valor de la columna All Errors.Error.Message no es igual a Invalid cell value '#REF!'., entonces la salida es el valor de la columna Tasa especial.
  • De lo contrario, nulo.

Captura de pantalla del cuadro de diálogo Agregar columna condicional con todas las condiciones de error establecidas para la nueva columna.

Después de mantener solo las columnas Account, Standard Rate, Special Rate y Final Rate , y agregando el tipo de datos correcto para cada columna, la siguiente imagen muestra el aspecto de la tabla final.

Captura de pantalla de la tabla final con las columnas restantes con los tipos de datos adecuados.

Uso try y catch con lógica personalizada

Como alternativa, también puede crear una nueva columna personalizada mediante las try palabras clave y catch .

try [Standard Rate] catch (r)=> if r[Message] <> "Invalid cell value '#REF!'." then [Special Rate] else null

Captura de pantalla del cuadro de diálogo de columna personalizada con una nueva fórmula que muestra el enfoque de sintaxis try-catch.