Control de errores

De forma similar a Excel y el lenguaje DAX tienen una función, Power Query tiene su propia sintaxis para probar IFERROR y detectar errores.

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

Nota

Para demostrar este concepto, en este artículo se usará un Excel workbook 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 Excel Workbook.

Aplicación de lógica condicional basada en errores

El origen de datos de ejemplo de esta demostración es Excel Workbook con la tabla siguiente:

Datos de ejemplo de Excel.

Esta tabla de un Excel workbook Excel errores como #NULL!, #REF! y #DIV/0. en la columna Velocidad estándar. Al importar esta tabla en el editor de Power Query, la siguiente imagen muestra su aspecto.

Tabla de ejemplo en Power Query.

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

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

Agregar columna personalizada con la try sintaxis otherwise y

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.

Pruebe de lo contrario una columna personalizada.

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

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

En caso contrario, pruebe la tabla final.

Detectar un error con try y aplicar lógica condicional personalizada

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 tarifa estándar existe, se usará ese valor. De lo contrario, se usará el valor de la columna Tasa especial, excepto las filas con #REF! cualquier error.

Nota

El único propósito de excluir el #REF! error es con fines de demostración. Con los conceptos que se muestran en este artículo, puede dirigirse a cualquier motivo de error, mensaje o detalles de su elección.

Al seleccionar cualquiera de los espacios en blanco junto al valor de error, se obtiene el panel de detalles en la parte inferior de la pantalla. El panel de detalles contiene el motivo del error, DataFormat.Error y el mensaje de error, Invalid cell value '#REF!' :

Error de ejemplo.

Solo puede seleccionar una celda a la vez, por lo que solo puede ver eficazmente los componentes de error de un valor de error a la vez. Aquí es donde creará una nueva columna personalizada y usará la try expresión .

Agregar columna personalizada con try sintaxis

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.

Usar try en una columna personalizada.

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

Pruebe los valores de registro.

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

Expanda los valores de registro.

Esta operación expondrá tres nuevos campos:

  • All Errors.HasError — muestra si el valor de la columna Tasa estándar ha tenido un error o no.
  • All Errors.Value — Si el valor de la columna Tasa estándar no tenía ningún error, esta columna mostrará el valor de la columna Tasa estándar. Para los valores con errores, este campo no estará disponible y, durante la operación de expansión, esta columna tendrá null valores.
  • Todos los errores.error — Si el valor de la columna Tasa estándar tenía un error, esta columna mostrará el registro de error del valor de la columna Tasa estándar. Para los valores sin errores, este campo no estará disponible y, durante la operación de expansión, esta columna tendrá null valores.

pruebe Campos expanddos.

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

  • Motivo del error
  • Mensaje de error
  • Detalle 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 Excel error que tiene cada celda. El mensaje de error se deriva del campo Mensaje de error del registro de errores.

Mensaje de error específico.

Agregar columna condicional

Ahora, con cada mensaje de error en 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 All Errors.Errors.Message es igual a , la salida null será el valor de la columna Velocidad estándar.
  • De lo contrario, si el valor de la columna All Errors.Errors.Message es igual a , la salida será el valor Invalid cell value '#REF!'. de la columna Tasa especial.
  • De lo contrario, null.

Columna condicional del mensaje de error.

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

Tabla final con tipos de datos.

Más recursos