Filtrar columnas de opción de Dataverse con fórmulas Power Fx

Completado

Cuando tenga una tabla de Dataverse con columnas de opciones, a menudo querrá filtrar los datos mediante estas columnas. Los escenarios de filtrado más habituales son:

  • Puede filtrar las filas de la tabla para mostrarlas en una galería.

  • Puede tener un menú desplegable o un control de cuadro combinado con la lista de valores de opción y dejar que el usuario seleccione una o varias opciones. Luego puede usar los valores seleccionados para filtrar las filas de la tabla que se muestran en la galería.

Por ejemplo, si tuviera un campo de opción Categoría en la tabla Cuentas, podría usar la siguiente lógica para filtrar solo los clientes preferidos:

Filter(
  Accounts,
  Category = 'Category (Accounts)'.'Preferred Customer'
)

Asegúrese de no utilizar solo la cadena "Cliente preferido" (como la imagen siguiente) porque no es una comparación válida. Se mostrará el error 'Tipos incompatibles para la comparación'. Dado que la 'Categoría' es una tabla (o un conjunto de opciones) en sí misma, no puede comparar el valor de la tabla con un valor de texto. Por tanto, debe utilizar la referencia completa: 'Category (Accounts)'.'Preferred Customer' (también se muestra como [@Category].'Preferred Customer').

Con frecuencia, querrá utilizar un menú desplegable o un cuadro combinado para que los usuarios puedan determinar los valores filtrados para la galería. En el siguiente ejemplo se usa un cuadro combinado para permitir que se muestren varias selecciones de categorías de cuentas.

Primero, agregue un cuadro combinado a la pantalla y luego establecer la propiedad Items mediante el uso de la función Choices.

La función Choices() prepara una lista de valores que el usuario puede seleccionar mediante el uso de los metadatos de la columna de opción Accounts.Category.

A continuación, modificará la fórmula Elementos para la galería para incluirla con el cuadro combinado de la propiedad SelectedItems.

Filter(Accounts, Category in ComboBoxCategory.SelectedItems)

Utilice el operador in para que la fórmula filtre por cualquiera de las categorías seleccionadas.

Esta fórmula solo mostrará filas en la galería cuando se seleccione al menos una categoría. Si desea mostrar todas las filas cuando no haya categorías seleccionadas, puede agregar una comprobación IsEmpty a la fórmula.

Filter(
  Accounts, Category in ComboBoxCategory.SelectedItems
  || IsEmpty(ComboBoxCategory.SelectedItems)
)

Filtrar columnas de opciones

El proceso de filtrar las filas de una tabla en una columna de opciones es complicado, ya que los datos en Dataverse se almacenan como una lista separada por comas. Como resultado, cualquier filtro que cree que involucre una columna de opciones recibirá una advertencia de delegación, tal y como se muestra en el siguiente ejemplo.

Un enfoque que podría adoptar es crear una vista de tabla de Dataverse que filtre los valores de opciones y los utilice en los criterios de la función Filter(). Con este enfoque evitaría tener que utilizar la delegación, pero no permitirá que el usuario de la aplicación proporcione los valores de los criterios de filtro. En la siguiente captura de pantalla se muestra un ejemplo del filtro de vista de Dataverse para la columna de opciones Entrega preferida.

Podría usar esta vista de Dataverse denominada Entrega el lunes mediante el uso de la siguiente función Filter():

Filter(
  Accounts,
  'Accounts (Views)'.'Monday Delivery'
)

También puede incluir criterios introducidos por el usuario para otras columnas además de la vista. Por ejemplo, la siguiente función Filter() muestra la adición de la columna de opción Categoría, que se filtra según el valor que el usuario seleccionó en la lista desplegable.

Filter(
  Accounts,
  'Accounts (Views)'.'Monday Delivery',
  Category = Dropdown1.Selected.Value
)

Dada su lista estandarizada de valores, las opciones y columnas de opciones son útiles para proporcionar formas coherentes de filtrar las filas de las tablas.