Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.
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.
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.
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.
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!'
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.
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.
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.
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
nullvalores. -
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
nullvalores.
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.
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.
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.
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