Filtrar columnas de opción de Dataverse con fórmulas Power Fx
Cuando tenga una tabla de Dataverse con una columna de opción, es muy posible que quiera filtrar los datos con la columna de opción. Los escenarios de filtrado más habituales son los siguientes:
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 Accounts, podría usar la siguiente lógica para filtrar solo los clientes preferidos:
Filter(
Accounts,
Category = 'Category (Accounts)'.'Preferred Customer'
)
Use la cadena table.column completa y no solo la cadena de columna "Preferred Customer" (como en la imagen siguiente), ya que no es una comparación válida. Si olvida añadir la tabla a la cadena, verá el error "Incompatible types for comparison". Dado que "Category (Accounts)" 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, es recomendable utilizar un menú desplegable o un cuadro combinado para filtrar una galería, de modo que los usuarios puedan determinar las categorías de los elementos que se mostrarán. En el siguiente ejemplo, utilizará un cuadro combinado para que los usuarios puedan hacer múltiples selecciones de categorías de cuentas para mostrar en la galería.
Primero añada un cuadro combinado a la pantalla y, luego, establezca la propiedad Items mediante 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.
Algo que podría hacer para evitar el problema de la delegación es crear una vista de tabla de Dataverse que filtre los valores de opciones y, luego, usar la vista en los criterios de la función Filter(). Con este método, evitaría la advertencia de delegación, pero no permitirá que el usuario de la aplicación proporcionase 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 Category. Por ejemplo, la siguiente función Filter() muestra la adición de la columna de opción Category, 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.